2016-04-13 3 views
0

Я работаю над кодом для анализа настроений. Теперь я хотел бы использовать Stemmer в своем фрагменте кода, но когда я использую функцию печати, результаты показывают, что сведение не работает. Вы знаете, что я делаю неправильно? Вот мой фрагмент кода:NLTK: Анализ настроений и обводка

pos_data = [] 
with open('Positive.txt') as f: 
for line in f: 
    pos_data.append([format_sentence(line), 'pos']) 
for line in f: 
    stemmer.stem(pos_data) 

print (pos_data) 

ответ

0

Вам нужно как разбить файл на линии и потенциально разделить строки на слова (которые могут быть лексемы)

>>> import nltk 
>>> from nltk import PorterStemmer 
>>> test = 'this sentence is just a tester set of words' 
>>> test_tokenize = nltk.word_tokenize(test) 
>>> test_tokenize 
['this', 'sentence', 'is', 'just', 'a', 'tester', 'set', 'of', 'words'] 
>>> port = PorterStemmer() 
>>> for word in test_tokenize: 
...  print port.stem(word) 
... 
thi 
sentenc 
is 
just 
a 
tester 
set 
of 
word 



with open('Positive.txt', 'rb') as f: 
    for line in f.readlines(): 
     words = nltk.word_tokenize(line) 
     for word in words: 
      print port.stem(word) 
0

кажется, что вы не зовем API Stemmer должным образом, поскольку он принимает один токен за раз. Это означает, что вы должны сначала подменить свое предложение. Ознакомьтесь с документами здесь http://www.nltk.org/howto/stem.html

Также для дальнейшего использования вы должны включить полный рабочий код с импортом и трассировку стека вашей ошибки.

with open('Positive.txt') as f: 
    for line in f: 
     tokens = format_sentence(line).split() # tokenize using spaces 
     stem_sentence = ' '.join([stemmer.stem(token) for token in tokens]) 
     pos_data.append([stem_sentence, 'pos']) 
+0

Спасибо, я сделал tokenize предложения в моем файле следующим образом: – Tommy5