Python NLTK:统计单词列表并计算有效英文单词的概率
我有一份很乱的文档,里面有一些不合法的英文单词、数字等等。我只想提取出所有合法的英文单词,然后计算我这个单词列表和所有合法英文单词的比例。
举个例子,如果我的文档里有这样一句话:
sentence= ['eishgkej he might be a good person. I might consider this.']
我只想统计 "他可能是个好人。我可能会考虑这个"
这句话中的 "可能"
这个词。
所以,我得出的结果是 2/10。
我在考虑使用下面的代码。不过,我需要改变的不是 features[word] = 1
这一行,而是特征的计数...
all_words = nltk.FreqDist(w.lower() for w in reader.words() if w.lower() not in english_sw)
def document_features(document):
document_words = set(document)
features = {}
for word in word_features:
if word in document_words:
features[word] = 1
else:
features[word]=0
return features
1 个回答
1
根据文档的说明,你可以使用count(self, sample)
这个方法来获取一个单词在FreqDist
对象中的出现次数。所以我觉得你想要的应该是这样的:
for word in word_features:
if word in document_words:
features[word] = all_words.count(word)
else:
features[word]= 0
或者你也可以用索引的方式,也就是说all_words[word]
应该和all_words.count(word)
返回的结果是一样的。
如果你想知道这个单词的频率,可以使用all_words.freq(word)
。