如何使用nltk找出英语中是否存在单词

新手上路,请多包涵

我正在寻找这个问题的合适解决方案。这个问题之前已经被问过很多次了,我没有找到一个合适的答案。我需要使用NLTK中的语料库来检测一个单词是否是英文单词

我试过这样做:

 wordnet.synsets(word)

这不适用于许多常用词。使用英语单词列表并在文件中执行查找不是一种选择。使用附魔也不是一种选择。如果有其他库可以做同样的事情,请提供api的用法。如果没有,请提供nltk中的语料库,其中包含所有英文单词。

原文由 akshitBhatia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

NLTK 包括一些语料库,只不过是单词列表。 Words Corpus 是来自 Unix 的 /usr/share/dict/words 文件, 被一些拼写检查器使用。我们可以用它来查找文本语料库中不常见或拼写错误的单词,如下所示:

 def unusual_words(text):
    text_vocab = set(w.lower() for w in text.split() if w.isalpha())
    english_vocab = set(w.lower() for w in nltk.corpus.words.words())
    unusual = text_vocab - english_vocab
    return sorted(unusual)

在这种情况下,您可以使用 english_vocab 检查您单词的成员关系。

 >>> import nltk
>>> english_vocab = set(w.lower() for w in nltk.corpus.words.words())
>>> 'a' in english_vocab
True
>>> 'this' in english_vocab
True
>>> 'nothing' in english_vocab
True
>>> 'nothingg' in english_vocab
False
>>> 'corpus' in english_vocab
True
>>> 'Terminology'.lower() in english_vocab
True
>>> 'sorted' in english_vocab
True

原文由 Mazdak 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题