2016-04-02 15 views
0

私はすでにSklearnを使用してTFIDFを行っていますが、ストップワード用の英語は使用できません。私が必要とするのは、ストップワードのリストを含むtxtファイルをインポートすることです。Sklearn - txtファイルからカスタムストップワードリストを追加する方法

stopword.txt

saya 
cintakan 
awak 

tfidf.py

from sklearn.feature_extraction.text import TfidfVectorizer 
corpus = ['Saya benci awak', 
      'Saya cinta awak', 
      'Saya x happy awak', 
      'Saya geram awak', 
      'Saya taubat awak'] 
vocabulary = "taubat".split() 
vectorizer = TfidfVectorizer(analyzer='word', vocabulary=vocabulary) 
X = vectorizer.fit_transform(corpus) 
idf = vectorizer.idf_ 
print dict(zip(vectorizer.get_feature_names(), idf)) 

してくださいアドバイス。ありがとうございました。

+0

なぜあなたのコーパスを前処理せずに、これらのストップワードを 'TFIDFVectorizer'で実行する前に自分自身を削除するのはなぜですか? –

+0

これは単なる例です。本当のものは本当にたくさんの言葉を含んでいます。あなたの理解のためだけに。 –

答えて

1

特定のストップワードのリストをロードし、パラメータとしてTfidfVectorizerに渡すことができます。あなたの例では:

from sklearn.feature_extraction.text import TfidfVectorizer 
corpus = ['Saya benci awak', 
      'Saya cinta awak', 
      'Saya x happy awak', 
      'Saya geram awak', 
      'Saya taubat awak'] 

# HERE YOU DO YOUR MAGIC: you open your file and load the list of STOP WORDS 
stop_words = [unicode(x.strip(), 'utf-8') for x in open('stopword.txt','r').read().split('\n')] 

vectorizer = TfidfVectorizer(analyzer='word', stop_words = stop_words) 
X = vectorizer.fit_transform(corpus) 
idf = vectorizer.idf_ 
print dict(zip(vectorizer.get_feature_names(), idf)) 

stop_wordsと出力:stop_wordsのPARAMなし

{u'taubat': 2.09861228866811, u'happy': 2.09861228866811, u'cinta': 2.09861228866811, u'benci': 2.09861228866811, u'geram': 2.09861228866811} 

出力:

{u'benci': 2.09861228866811, u'taubat': 2.09861228866811, u'saya': 1.0, u'awak': 1.0, u'geram': 2.09861228866811, u'cinta': 2.09861228866811, u'happy': 2.09861228866811} 

警告:私はそれためのparam vocabularyを使用していないだろうTfidfVectorizerに指定された単語にのみ注意を払うように指示していますあなたが却下したい単語を言うよりも、あなたが考慮したいすべての単語を認識することは、通常、より困難です。したがって、例からvocabularyパラメータを削除し、リストにstop_wordsパラメータを追加すると、期待通りに機能します。

関連する問題