2016-05-26 13 views
0

Ich habe versucht, Stoppwörter aus einer CSV-Datei zu entfernen, die mit Python-Code lesen, aber mein Code scheint nicht zu funktionieren. Ich habe versucht, einen Beispieltext im Code zu verwenden, um meinen Code zu validieren, aber es ist immer noch derselbe. Unten ist mein Code, und ich würde es begrüßen, wenn jemand mir das Problem zu beheben helfen kann .. hier ist der Code unterEntfernen von Stoppwörtern aus der Liste mit Python3

import nltk 
from nltk.tokenize import word_tokenize 
from nltk.corpus import stopwords 
import csv 

article = ['The computer code has a little bug' , 
     'im learning python' , 
      'thanks for helping me' , 
      'this is trouble' , 
      'this is a sample sentence' 
      'cat in the hat'] 

tokenized_models = [word_tokenize(str(i)) for i in article] 
stopset = set(stopwords.words('english')) 
stop_models = [i for i in tokenized_models if str(i).lower() not in stopset] 
print('token:'+str(stop_models)) 
+1

Als allgemeine Beratung, es einfach aus den Werten drucken nützlich ist Sie haben derzeit zwischen Zeilen, um zu sehen, was zu jeder nachfolgenden Zeile gesendet wird. –

+0

Danke und ich habe das ohne Glück versucht !! – RData

Antwort

1

Ihre tokenized_models eine Liste von Zeichen übersetzten Sätzen, also eine Liste von Listen. Ergo, versucht die folgende Zeile ein Stoppwort eine Liste von Wörtern zu entsprechen:

stop_models = [i for i in tokenized_models if str(i).lower() not in stopset] 

Stattdessen iterieren wieder durch Worte. Etwas wie:

clean_models = [] 
for m in tokenized_models: 
    stop_m = [i for i in m if str(i).lower() not in stopset] 
    clean_models.append(stop_m) 

print(clean_models) 

Off-topic nützlicher Hinweis:
Um eine mehrzeilige Zeichenfolge zu definieren, Klammern verwenden und kein Komma:

article = ('The computer code has a little bug' 
      'im learning python' 
      'thanks for helping me' 
      'this is trouble' 
      'this is a sample sentence' 
      'cat in the hat') 

Diese Version funktionieren würde, mit Ihrem ursprünglichen Code

0

word_tokenize(str(i)) gibt eine Liste von Wörtern zurück, also tokenized_models ist eine Liste von Listen. Sie müssen diese Liste reduzieren, oder besser noch article eine einzige Zeichenfolge machen, da ich nicht verstehe, warum es im Moment eine Liste ist.

Dies liegt daran, die in Betreiber nicht durch eine Liste suchen und dann durch Strings in dieser Liste zur gleichen Zeit, zum Beispiel:

>>> 'a' in 'abc' 
True 
>>> 'a' in ['abc'] 
False