如何在词典中搜索nltk词干?

时间:2017-03-05 05:42:58

标签: python dictionary nltk stem

我在检查词典中是否存在词干词时遇到问题。这是我正在做的一些情绪分析工作。所有我回来的都是这里的错误:

Traceback (most recent call last):
File "sentiment.py", line 369, in <module>
score += int(senti_word_dict.get(get_stem(word)))
TypeError: int() argument must be a string or a number, not 'NoneType'

这是我通过NLTK查找词干的方法的代码:

def get_stem(word):
    st = SnowballStemmer("english")
    stemmed_word = st.stem(word)
    return '' if stemmed_word is None else stemmed_word   

以下是针对字典检查该单词的代码:

for comment in all_comments:
    score = 0
    tokens = tokenize(comment)
    for word in tokens:
      if word in senti_word_dict:
        score += int(senti_word_dict.get(get_stem(word)))
    print(str(score)+" "+comment)
    print('\n')

目前我只是得分。有没有一种方法可以将该词干作为字符串传递,以查看字典中的分数是什么?如果有什么我做错了或者可以做得更好让我知道!谢谢!

1 个答案:

答案 0 :(得分:0)

您检查word是否在senti_word_dict。也许是这样。但是你干它(它变成一个不同的词!)并尝试用senti_word_dict.get从字典中检索词干。如果词干不在词典中(为什么会出现?),get()会返回None。因此,错误。解决方案:首先干掉这个词然后再查找它。