【问题标题】:how to implement python spell checker using google's "did you mean?"如何使用谷歌的“你的意思是?”实现python拼写检查器
【发布时间】:2011-12-08 09:28:02
【问题描述】:

我正在寻找一种在 python 中创建函数的方法,您可以在其中传入一个字符串并返回它是否拼写正确。我不想查字典。相反,我希望它检查 Google 的拼写建议。这样,名人姓名和其他各种专有名词将被视为拼写正确。

这是我目前所处的位置。它在大多数情况下都有效,但会与一些名人名字混淆。例如,“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;

【问题讨论】:

标签: python api


【解决方案1】:

Peter Norvig 告诉你如何实现spell checker in Python.

【讨论】:

  • 但这不只是检查文本文件中的字典吗?
  • 是的,我做到了。它不会去谷歌检查单词是否正确,它只是在你指定的文本文件中查找。
  • 你不明白......统计数据对你来说毫无意义吗?不,它不会发送给 Google。我建议您的方式非常不正确;这将是一个更好的方法。
【解决方案2】:

与其死守谷歌先生,不如试试其他大佬。

  1. 如果您真的想坚持使用计算页面请求数的搜索引擎,YahooBing 提供了一些出色的功能。雅虎直接提供使用 YQL 表的拼写检查服务(免费:每天 5000 次请求,非商业性)。

  2. 你有很多 Python API,它们能够做很多类似的魔法,包括你提到的名词(有时可能会转身——毕竟它基于概率的某个地方)

所以,在第二种情况下,你得到了一个很好的列表(完全免费)

  1. GNU - Aspell(甚至有 python 绑定)
  2. PyEnchant
  3. Whoosh(它不仅仅做拼写检查,但我认为它有一些优势。)

我希望他们能让您清楚地了解事情的运作方式。

实际上,拼写检查涉及机器学习、人工智能、自然语言处理等领域的非常复杂的机制。因此,像 Google/Yahoo 这样的公司并没有真正完全免费提供他们的 API。

【讨论】:

  • “没有人愿意免费和开源”是什么意思?您在答案中列出了几个免费和开源示例。
  • @MichaelHoffman 我实际上指的是更复杂的 API,例如 Yahoo Spell Checking 或 Google Prediction API..
猜你喜欢
  • 2012-03-18
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
相关资源
最近更新 更多