2016-04-13 7 views
0

Ich arbeite an einem Code für Sentiment Analyse. Jetzt möchte ich einen Stemmer in meinem Code-Snippet verwenden, aber wenn ich die Druckfunktion verwende, zeigen die Ergebnisse, dass die Stemming nicht funktioniert. Hast du eine Ahnung, was ich falsch mache? Hier ist mein Code-Schnipsel:NLTK: Sentiment Analyse und Stemming

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) 

Antwort

0

Sie auf beide brauchen die Datei in Zeilen aufgeteilt und spaltete möglicherweise die Linien in Worte zu fassen (das Token aufgeteilt werden kann)

>>> 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

Es scheint, dass Sie nicht anrufen die Stemmer-API ordnungsgemäß, da sie jeweils ein einzelnes Token benötigt. Das bedeutet, dass Sie zuerst Ihren Satz in Token setzen sollten. Überprüfen Sie die Dokumente hier http://www.nltk.org/howto/stem.html

Auch für zukünftige Referenz sollten Sie vollständigen Arbeitscode, mit Importen und der Stack-Trace von Ihrem Fehler enthalten.

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

Danke, ich habe die Sätze in meiner Datei wie folgt tokenisiert: – Tommy5

Verwandte Themen