2013-03-05 147 views
0

我有一个脏文档,其中包含无效的英文单词,数字等 我只想将所有有效的英文单词,然后计算我的列表的比例的字数与有效英文单词的总数。Python NLTK:使用有效的英文单词计算单词和概率列表

例如,如果我的文档中有一句话:

sentence= ['eishgkej he might be a good person. I might consider this.'] 

我只想"he might be a good person. I might consider this"计数,计数"might"

所以,我得到了答案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

有你试图在字典中查找单词,例如共发现? – 2013-03-05 16:22:06

+0

“english_sw”和“word_features”的定义在哪里? – askewchan 2013-03-05 16:33:56

+0

oh english_sw是“词典”,如WordNet,如拉斯曼斯所说.. – user976856 2013-03-05 16:38:27

回答

1

根据the documentation可以使用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)