Как получить первый набор из списка 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
Кто-нибудь может увидеть, где я ошибаюсь в своем коде? заранее спасибо