如何使用谷歌的“你是想说?”实现Python拼写检查器
我想在Python里写一个函数,输入一个字符串,然后返回这个字符串的拼写是否正确。我不想用字典来检查拼写,而是想用谷歌的拼写建议来判断。这样的话,像名人的名字和其他一些专有名词也能被认为是拼写正确的。
目前我做到了这一点。大部分情况下它能正常工作,但有些名人的名字会出问题。例如,“cee lo green”或者“posner”这些名字会被标记为拼写错误。
import httplib
import xml.dom.minidom
data = """
<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">
<text> %s </text>
</spellrequest>
"""
def spellCheck(word_to_spell):
con = httplib.HTTPSConnection("www.google.com")
con.request("POST", "/tbproxy/spell?lang=en", data % word_to_spell)
response = con.getresponse()
dom = xml.dom.minidom.parseString(response.read())
dom_data = dom.getElementsByTagName('spellresult')[0]
if dom_data.childNodes:
for child_node in dom_data.childNodes:
result = child_node.firstChild.data.split()
for word in result:
if word_to_spell.upper() == word.upper():
return True;
return False;
else:
return True;
2 个回答
11
彼得·诺维格告诉你如何用Python实现一个拼写检查器。
10
与其总是依赖谷歌,不妨试试其他一些大牌搜索引擎。
如果你真的想用那些会计算页面请求的搜索引擎,雅虎和必应提供了一些很不错的功能。雅虎直接提供拼写检查服务,使用的是YQL表(免费:每天5000次请求,且仅限非商业使用)。
你可以找到很多Python的API,它们能做很多类似的事情,包括你提到的名词(有时候结果可能会有点意外,毕竟这也是基于概率的)。
所以,在第二种情况下,你可以得到一个很不错的免费列表:
- GNU - Aspell(甚至有Python的绑定)
- PyEnchant
- Whoosh(它的功能远不止拼写检查,但我觉得它在这方面有一些优势。)
我希望这些能让你对事情的运作有个清晰的了解。
其实,拼写检查涉及到机器学习、人工智能、自然语言处理等非常复杂的机制。所以,像谷歌和雅虎这样的公司并不会完全免费提供他们的API。