2016-09-09 15 views
2

私はPythonには新しく、私はNLTKを使って自分のファイルのストップワードを削除しようとしています。 コードは動作していますが、句読点を区切っています。テキストが(@user)と記述されているツイートであれば、「@ user」となります。 後で言葉の頻度をする必要があります。私は言葉やハッシュタグが正しく動作する必要があります。 マイコード:Python - NLTK句読点区切り

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 ない、これはそれを行うための最善の方法ですが、私はそれをこのように固定した場合に確認してください:

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

答えて

3

の代わりword_tokenizeを、あなたが提供Twitter-aware tokenizerを使用することができますによってnltk:

from nltk.tokenize import TweetTokenizer 

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

これは良い方法です、ありがとう – urukh

関連する問題