1

我有一个评论文本,我想定义它是正面的还是负面的。我正在使用 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

谁能看到我的代码哪里出错了?提前致谢

4

0 回答 0