我正在使用python NLTK对twitter数据进行情绪分析。我需要一本字典,里面有单词的+ve和-ve极性。我读了很多关于sentiwordnet的文章,但是当我在我的项目中使用它时,它并不能提供高效和快速的结果。我想我用得不对。有人能告诉我正确的使用方法吗?以下是我到目前为止所做的步骤:
我使用nltk包进行标记和标记。下面是我的代码:
import nltk
from nltk.stem import *
from nltk.corpus import sentiwordnet as swn
tokens=nltk.word_tokenize(row) #for tokenization, row is line of a file in which tweets are saved.
tagged=nltk.pos_tag(tokens) #for POSTagging
for i in range(0,len(tagged)):
if 'NN' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'n'))>0:
pscore+=(list(swn.senti_synsets(tagged[i][0],'n'))[0]).pos_score() #positive score of a word
nscore+=(list(swn.senti_synsets(tagged[i][0],'n'))[0]).neg_score() #negative score of a word
elif 'VB' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'v'))>0:
pscore+=(list(swn.senti_synsets(tagged[i][0],'v'))[0]).pos_score()
nscore+=(list(swn.senti_synsets(tagged[i][0],'v'))[0]).neg_score()
elif 'JJ' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'a'))>0:
pscore+=(list(swn.senti_synsets(tagged[i][0],'a'))[0]).pos_score()
nscore+=(list(swn.senti_synsets(tagged[i][0],'a'))[0]).neg_score()
elif 'RB' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'r'))>0:
pscore+=(list(swn.senti_synsets(tagged[i][0],'r'))[0]).pos_score()
nscore+=(list(swn.senti_synsets(tagged[i][0],'r'))[0]).neg_score()
最后,我将计算有多少条tweets是正面的,有多少条tweets是负面的。 我错在哪里?我该怎么用?还有没有其他类似的词典,容易使用呢?
是的,你还可以使用其他词汇。你可以在这里找到一小串词典:http://sentiment.christopherpotts.net/lexicons.html#resources 刘冰的意见词典似乎很容易使用。
除了链接到这些词汇外,这个网站是一个非常好的情绪分析教程。
计算情绪
相关问题 更多 >
编程相关推荐