8

我想使用拼写/语法检查器处理中到大量的文本片段,以获得它们“质量”的粗略近似值和排名。速度也不是真正的问题,所以我认为最简单的方法是编写一个脚本,将片段传递给 Microsoft Word (2007) 并在它们上运行拼写和语法检查器。

有没有办法从脚本(特别是 Python)中做到这一点?什么是学习以编程方式控制 Word 的好资源?

如果没有,我想我可以尝试一下Open Source Grammar Checker (SO)

更新

作为对 Chris 的回答,是否至少有一种方法可以 a) 打开一个文件(包含片段),b) 从 Word 内部运行一个调用拼写和语法检查器的 VBA 脚本,以及 c) 返回一些指示片段的“分数”?

更新 2

我添加了一个似乎可行的答案,但如果有人有其他建议,我会在一段时间内保持这个问题。

4

1 回答 1

9

它需要一些挖掘,但我认为我找到了一个有用的解决方案。按照http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html的建议,我正在使用win32com模块(如果 SourceForge 链接不起作用,根据这个 Stack Overflow 答案可以pip用来获取模块),它允许访问 Word 的 COM 对象。下面的代码很好地证明了这一点:

import win32com.client, os

wdDoNotSaveChanges = 0
path = os.path.abspath('snippet.txt')

snippet = 'Jon Skeet lieks ponies.  I can haz reputashunz?  '
snippet += 'This is a correct sentence.'
file = open(path, 'w')
file.write(snippet)
file.close()

app = win32com.client.gencache.EnsureDispatch('Word.Application')
doc = app.Documents.Open(path)
print "Grammar: %d" % (doc.GrammaticalErrors.Count,)
print "Spelling: %d" % (doc.SpellingErrors.Count,)

app.Quit(wdDoNotSaveChanges)

产生

语法:2
拼写:3

从 Word 手动调用检查时的结果匹配。

于 2009-10-30T02:40:36.200 回答