2016-09-09 5 views
2

Ich bin ziemlich neu in Python, ich versuche NLTK zu verwenden, um Stoppwörter meiner Datei zu entfernen. Der Code funktioniert, aber es trennt Interpunktion, wenn mein Text ein Tweet mit einer Erwähnung (@user) ist, bekomme ich "@ user". Später muss ich eine Worthäufigkeit machen, und ich brauche Erwähnungen und Hashtags, um richtig zu arbeiten. Mein Code:Python - NLTK Trennzeichen

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize 
import codecs 
arquivo = open('newfile.txt', encoding="utf8") 
linha = arquivo.readline() 
while linha: 
    stop_word = set(stopwords.words("portuguese")) 
    word_tokens = word_tokenize(linha) 
    filtered_sentence = [w for w in word_tokens if not w in stop_word] 
    filtered_sentence = [] 
    for w in word_tokens: 
     if w not in stop_word: 
      filtered_sentence.append(w) 
    fp = codecs.open("stopwords.txt", "a", "utf-8") 
    for words in (filtered_sentence): 
     fp.write(words + " ") 
    fp.write("\n") 
    linha= arquivo.readline() 

EDIT Nicht sicher, ob dies der beste Weg, es zu tun ist, aber ich regelte es auf diese Weise:

for words in (filtered_sentence): 
     fp.write(words) 
     if words not in string.punctuation: 
      fp.write(" ") 
    fp.write("\n") 

Antwort

3

statt word_tokenize, könnten Sie Twitter-aware tokenizer bereitgestellt verwenden von nltk:

from nltk.tokenize import TweetTokenizer 

... 
tknzr = TweetTokenizer() 
... 
word_tokens = tknzr.tokenize(linha) 
+0

Das ist viel besser, vielen Dank – urukh