【问题标题】:Python: check whether a word is spelled correctly [closed]Python:检查单词是否拼写正确[关闭]
【发布时间】:2011-05-28 21:30:43
【问题描述】:

我正在寻找一种简单的方法来检查某个字符串是否是正确拼写的英文单词。例如,'looked' 将返回 True,而 'hurrr' 将返回 False。我不需要拼写建议或任何拼写纠正功能。只是一个简单的函数,它接受一个字符串并返回一个布尔值。

【问题讨论】:

标签: python spell-checking


【解决方案1】:

两种可能的方法:

  1. 拥有自己的文件,其中包含所有 有效的词。将文件加载到 设置并比较每个单词以查看 是否存在于其中(集合中的单词)
  2. (更好的方法)使用PyEnchant,Python 的拼写检查库

PyEnchant 现在没有得到积极维护。

【讨论】:

  • 谢谢,这正是我在等待答案时所做的;)
  • 使用集合而不是列表,并询问if word in my_set 以获得更好的性能。
  • @Karl:确实是一个非常有效的观点,在确定对象是否存在于集合中时,集合明显快于列表。已更新。
  • PyEnchant 是一个很好的建议!
  • 我会选择trie tree而不是列表或集合
【解决方案2】:

我一直在寻找相同的功能,并努力寻找在 64 位 Windows 中工作的现有库。 PyEnchant,虽然是一个很棒的库,但目前不活跃,也不能在 64 位中工作。我发现的其他库在 Windows 中不起作用。

我终于找到了一个解决方案,希望其他人会觉得有价值。

解决方案...

  • 使用 nltk
  • 从 nltk.corpus.brown 中提取单词列表
  • 将单词列表转换为集合(以进行高效搜索)
  • 使用in关键字判断你的字符串是否在集合中

from nltk.corpus import brown
word_list = brown.words()
word_set = set(word_list)

# Check if word is in set
"looked" in word_set  # Returns True
"hurrr" in word_set  # Returns False

使用计时器检查,您会发现搜索集合几乎不需要任何时间。 1000 个单词的测试耗时 0.004 秒。

【讨论】:

  • 遗漏了很多非常不常见的词,例如重复使用、闪烁、提示等。
【解决方案3】:

我个人使用:http://textblob.readthedocs.io/en/dev/ 这是一个活跃的项目,根据网站:

拼写校正基于 Peter Norvig 的“如何编写拼写校正器”[1],并在模式库中实现。准确率约为 70%

【讨论】:

  • Textblob 超级酷!在安装、使用、文档方面。感谢分享
【解决方案4】:

Yahoo 通过 YQL 提供拼写检查 API

它非常简单,您可以获得 5000 个查询/IP 地址/天用于非商业用途(免费)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2013-05-25
    相关资源
    最近更新 更多