Python NLTK:统计单词列表并计算有效英文单词的概率

0 投票
1 回答
1833 浏览
提问于 2025-04-17 18:01

我有一份很乱的文档,里面有一些不合法的英文单词、数字等等。我只想提取出所有合法的英文单词,然后计算我这个单词列表和所有合法英文单词的比例。

举个例子,如果我的文档里有这样一句话:

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)

撰写回答