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

How can I search a dictionary for a 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')

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

您检查 word 是否在 senti_word_dict 中。也许是。但随后你将它词干化(它变成了一个不同的词!)并尝试使用 senti_word_dict.get 从字典中检索词干。如果词干不在字典中(为什么它应该是?),get() returns a None。因此,错误。解决办法:先把词干出来再查。