我正在测试 NLTK package的词汇。我使用了以下代码并希望看到所有 True。
import nltk
english_vocab = set(w.lower() for w in nltk.corpus.words.words())
print ('answered' in english_vocab)
print ('unanswered' in english_vocab)
print ('altered' in english_vocab)
print ('alter' in english_vocab)
print ('looks' in english_vocab)
print ('look' in english_vocab)
但是我的结果如下,少了那么多词,或者说是少了某些形式的词?我错过了什么吗?
False
True
False
True
False
True
请您参考如下方法:
的确,语料库并不是所有英语单词的详尽列表,而是文本的集合。判断一个单词是否为有效英语单词的更合适的方法是使用 wordnet:
from nltk.corpus import wordnet as wn
print wn.synsets('answered')
# [Synset('answer.v.01'), Synset('answer.v.02'), Synset('answer.v.03'), Synset('answer.v.04'), Synset('answer.v.05'), Synset('answer.v.06'), Synset('suffice.v.01'), Synset('answer.v.08'), Synset('answer.v.09'), Synset('answer.v.10')]
print wn.synsets('unanswered')
# [Synset('unanswered.s.01')]
print wn.synsets('notaword')
# []
