2014-03-31 4 views
0

Я пытаюсь создать анализатор настроений в Python, который загружает текст и анализирует его на основе списка отрицательных и положительных слов. Для каждого матча в тексте со словом в poswords.txt должна быть оценка +1 и за каждое соответствие в тексте в negwords.txt должно быть -1 баллов, общий балл для текста будет сентиментальная оценка. Это, как я пытался это сделать, но я продолжаю просто получить оценку 0.Сравнение загруженной строки со списком в Python

Ответ ниже, кажется, не работает, я получаю чувство, оценка 0.

split = text.split() 
    poswords = open('poswords.txt','r') 
    for word in split: 
     if word in poswords: 
      sentimentScore +=1 
    poswords.close() 

    negwords = open('negwords.txt','r') 
    for word in split: 
     if word in negwords: 
      sentimentScore -=1 
    negwords.close() 

ответ

1

poswords и negwords в вашем коде - это только файлы, вы не читаете слова в этих файлах.

Здесь:

split = text.split() 
poswords = open('poswords.txt','r') 
pos = [] 
for line in poswords: 
    pos.append(line.strip()) 
for word in split: 
    if word in pos: 
     sentimentScore +=1 
poswords.close() 

negwords = open('negwords.txt','r') 
neg = [] 
for line in negwords: 
    neg.append(line.strip()) 
for word in split: 
    if word in neg: 
     sentimentScore -=1 
negwords.close() 

Если файлы огромны, выше не является оптимальным решением. Создать словарь для положительных и отрицательных слов:

input_text = text.split() # avoid using split as a variable name, since it is a keyword 
poswords = open('poswords.txt','r') 
pos_dict = defaultdict(int) 
for line in poswords: 
    pos_dict[line.strip()] += 1 
poswords.close() 

negwords = open('negwords.txt','r') 
neg_dict = defaultdict(int) 
for line in negwords: 
    neg_dict[line.strip()] += 1 
negwords.close() 

sentiment_score = 0 
for word in input_text: 
    if word in pos_dict: 
     sentiment_score += 1 
    elif word in neg_dict: 
     sentiment_score -=1 
+0

Привет Warunsl, спасибо за быстрый ответ, однако, этот код не кажется, работать, я до сих пор получаю настроение оценку 0 на всех из «input_text» I проходя через анализатор – user3482449

Смежные вопросы