首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用Python检查一个单词是否为英文单词?

如何用Python检查一个单词是否为英文单词?
EN

Stack Overflow用户
提问于 2010-09-25 00:01:16
回答 9查看 216.6K关注 0票数 159

我想在Python程序中检查一个单词是否在英语词典中。

我相信nltk wordnet接口可能是可行的,但我不知道如何使用它来完成如此简单的任务。

代码语言:javascript
复制
def is_english_word(word):
    pass # how to I implement is_english_word?

is_english_word(token.lower())

将来,我可能想检查字典中是否有单词的单数形式(例如,properties -> property -> english word)。我该如何做到这一点?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-09-25 00:26:11

为了(更)强大和灵活,可以使用专用的拼写检查库,比如PyEnchant。有一个tutorial,或者你可以直接进入:

代码语言:javascript
复制
>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False
>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
>>>

PyEnchant附带了几个字典(en_GB,en_US,de_DE,fr_FR),但是如果你想要更多的语言,可以使用任何OpenOffice ones

似乎有一个名为inflect的多元化库,但我不知道它是否有用。

票数 243
EN

Stack Overflow用户

发布于 2014-01-28 16:38:26

因为WordNet并不包含所有的英文单词,所以它在WordNet上不能很好地工作。基于没有附魔的NLTK的另一种可能性是NLTK的单词语料库

代码语言:javascript
复制
>>> from nltk.corpus import words
>>> "would" in words.words()
True
>>> "could" in words.words()
True
>>> "should" in words.words()
True
>>> "I" in words.words()
True
>>> "you" in words.words()
True
票数 64
EN

Stack Overflow用户

发布于 2010-09-25 00:12:00

使用set来存储单词列表,因为查找它们会更快:

代码语言:javascript
复制
with open("english_words.txt") as word_file:
    english_words = set(word.strip().lower() for word in word_file)

def is_english_word(word):
    return word.lower() in english_words

print is_english_word("ham")  # should be true if you have a good english_words.txt

要回答问题的第二部分,复数应该已经在一个很好的单词列表中,但是如果您出于某种原因想要从列表中专门排除这些复数,您确实可以编写一个函数来处理它。但是英语的复数规则非常棘手,所以我一开始就把复数包含在单词列表中。

至于在哪里可以找到英文词表,我只是通过谷歌搜索“英语词表”就找到了几个。这里有一个:http://www.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt,如果你特别想要其中一种方言,你可以在谷歌上搜索英国英语或美国英语。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3788870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档