2016-04-12 4 views
0

Я пытаюсь написать код в области Sentiment Analysis. У меня есть словарь (.txt), в котором слова оцениваются, например «good, 2» и «bad, -3». Теперь я хочу, чтобы Python учитывал положительные и отрицательные стороны в данном предложении. Мой фрагмент кода выглядит следующим образом:append function in for-loop не работает

text ='' 

result = [] 
for sentence in sent_tokenize(text): 
    pos = 0 
    neg = 0 
    for word in word_tokenize(sentence): 
     score = Dictionary.get(word, 0) 
     if score > 0: 
      pos += score 
      if score < 0: 
       neg += score 
       result.append([pos, neg]) 

for s in result: print(s) 

print(result) 

Так что я хотел бы, чтобы результат выглядеть примерно так: [5, -6]. Но я получаю пустой результат: []. Вы не знаете, что я делаю неправильно?

+0

Где вы определяете 'sent_tokenize()' и 'word_tokenize()'? – zondo

+0

Раньше в коде я определил его: предложение = word_tokenize (''. Lower()) и предложения = sent_tokenize (''. Lower()) – Tommy5

+0

Это вызывает функции, а не их определение. – zondo

ответ

2

score не может быть меньше и больше нуля, в то же время:

if score > 0: 
    pos += score 
    if score < 0: 
     neg += score 
     result.append([pos, neg]) 

Изменить код:

result = [] 
for sentence in sent_tokenize(text): 
    pos = 0 
    neg = 0 
    for word in word_tokenize(sentence): 
     score = Dictionary.get(word, 0) 
     if score > 0: 
      pos += score 
     if score < 0: 
      neg += score 
    result.append([pos, neg]) 

Обратите внимание на отступом result.append([pos, neg]). Это должно дать вам новую пару pos, neg за каждое предложение.

+0

Спасибо за советы ! К сожалению, я все еще получаю пустой вывод ... Нужно ли мне что-то менять? – Tommy5

+0

Просто добавьте отладочные отпечатки, чтобы узнать, какие значения имеют «предложение» и «слово». Убедитесь, что вы действительно делаете петли. ;) –

+0

Вы получили его на работу? –