Python: 检查单词拼写是否正确
我想找一个简单的方法来检查一个字符串是否是拼写正确的英语单词。比如说,'looked' 应该返回 True(对的意思),而 'hurrr' 应该返回 False(错的意思)。我不需要拼写建议或者任何纠正拼写的功能。只要一个简单的函数,输入一个字符串,输出一个布尔值就可以了。
4 个回答
4
我个人使用过这个:http://textblob.readthedocs.io/en/dev/。这是一个活跃的项目,网站上说:
拼写纠正的技术是基于彼得·诺维格的“如何写一个拼写纠正器”[1],这个技术在pattern库中实现。它的准确率大约是70%。
8
我之前也在找类似的功能,但一直找不到适合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
使用定时器检查一下,你会发现搜索这个集合几乎不需要时间。测试了1,000个单词,只花了0.004秒。
31
有两种可能的方法来实现这个功能:
- 自己准备一个文件,里面包含所有有效的单词。把这个文件加载到一个集合里,然后逐个比较每个单词,看看它是否在集合中(可以用“单词在集合里”来检查)。
- (更好的方法)使用 PyEnchant,这是一个用于Python的拼写检查库。
不过,PyEnchant现在已经不再积极维护了。