我有一个评论文本,我想定义它是正面的还是负面的。我正在使用 sentiwordnet 来获取评论中每个单词的分数。我的问题是因为每个单词都有多个同义词我只想要第一个:例如:
swn.senti_synsets('slow')
[SentiSynset('decelerate.v.01'), SentiSynset('slow.v.02'), \
SentiSynset('slow.v.03'), SentiSynset('slow.a.01'), SentiSynset('slow.a.02'), \
SentiSynset('slow.a.04'), SentiSynset('slowly.r.01'), SentiSynset('behind.r.03')]
我想要第一个这SentiSynset('decelerate.v.01')
是我的代码:
Text = " I love the movie but hate the music"
word_tok = word_tokenize(Text)
for i in word_tok :
g = nltk.tag.pos_tag([i])
for word, tag in g:
if tag.startswith('JJ'):
new = 'a'
elif tag.startswith('V'):
new = 'v'
elif tag.startswith('R'):
new = 'r'
else:
new =''
if new != '':
synsets = list(swn.senti_synsets(word, new))
b = synsets[0]
首先我对文本进行标记,然后我获取每个单词的标签并将其更改为 Sentiwordnet 识别的标签。如果这个词是形容词/副词/动词,我希望他们的第一个同义词得到 pos/neg 分数。当我运行这个脚本时,我得到了错误
Traceback (most recent call last):
File "C:\Python34\test2.py", line 39, in <module>
b = synsets[0]
IndexError: list index out of range
谁能看到我的代码哪里出错了?提前致谢