我想使用拼写/语法检查程序处理大量的中文文本片段,以获得粗略近似值并对其“质量”进行排名。速度也不是真的令人担忧,所以我认为最简单的方法是编写一个脚本,将片段传递给Microsoft Word(2007)并在其上运行拼写和语法检查。
有没有办法从脚本(特别是Python)执行此操作?学习如何以编程方式控制Word的好资源是什么?
如果没有,我想我可以试试Open Source Grammar Checker (SO)。
回应Chris的回答,至少有一种方法可以a)打开一个文件(包含代码段),b)从Word内部运行一个调用拼写和语法检查器的VBA脚本,以及c )返回一些片段“得分”的指示?
我添加了一个似乎有用的答案,但如果有人有其他建议,我会在一段时间内保持这个问题。
答案 0 :(得分:8)
需要一些挖掘,但我认为我找到了一个有用的解决方案。根据{{3}}的建议我正在使用http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html模块(如果SourceForge链接不起作用,根据win32com,您可以使用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)
产生
Grammar: 2 Spelling: 3
在从Word手动调用检查时匹配结果。