Как получить первый набор из списка Sentiwordnet?

У меня есть текст отзыва, и я хочу определить, является ли он положительным или отрицательным. Я использую 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. Если слово прилагательное / наречие / глагол, я хочу, чтобы их первый набор получил оценку положительного / отрицательного значения. когда я запускаю этот скрипт, я получаю ошибку

Traceback (most recent call last):
  File "C:\Python34\test2.py", line 39, in <module>
    b  = synsets[0]
IndexError: list index out of range

Кто-нибудь может увидеть, где я ошибаюсь в своем коде? заранее спасибо

0 ответов

Другие вопросы по тегам