如何从Sentiwordnet列表中获取第一个synset?

时间:2017-02-13 07:36:11

标签: python-3.x sentiment-analysis senti-wordnet

我有一篇评论文字,我想定义它是正面还是负面。我正在使用sentiwordnet获取评论中每个单词的分数。我的问题是因为每个单词都有多个synset我只想要第一个: 例如:

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识别的标记。如果单词是形容词/副词/动词,我希望他们的第一个synset得到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

任何人都可以在我的代码中看到我的错误吗? 提前致谢

0 个答案:

没有答案