2017-07-07 3 views
0

NLPのbag-of-wordsモデルに基づいて分類しようとしています。電車と試験のための言葉の袋を標準化するには?

  1. (句読点などの単語の除去、小文字、ステミングを停止)
  2. 列車用TF-IDF行列を作成NLTKを使用して列データの前処理を行いました。
  3. テストの前処理を行いました。
  4. テストデータ用に作成されたtf-idfマトリックス。
  5. 列車と試験データには単語の袋が異なるため、機能の数が異なるため、knnのような分類アルゴリズムは使用できません。
  6. 私は列車とテストデータを併合し、tf-idfマトリックスを作成しました。これは、単語の異なるバッグの上記の問題を解決しました。しかし結果の行列は大きすぎて処理できませんでした。

ここに私の質問は以下のとおりです。

  1. 電車やテストのための言葉の正確なバッグを作成する方法はありますか?
  2. 列車を追加してテストするのが適切でない場合は、LDAのような次元削減アルゴリズムを実行する必要がありますか?
+0

ここをクリック[CountVectorizer](http://scikit-learn.org/stable/modules/gener) ated/sklearn.feature_extraction.text.CountVectorizer.html) – sera

答えて

0

scikit learnのカウントベクトル化ツールを使用して、ドキュメント内の特定の単語のベクトルを作成し、それを使用して選択した分類子を訓練してから、そのデータをテストすることができます。

次のようにトレーニングセットの場合は、あなたがデータを訓練するためにベクトライザーを使用することができますが:

LabeledWords=pd.DataFrame(columns=['word','label']) 

LabeledWords.append({'word':'Church','label':'Religion'}) 

vectorizer = CountVectorizer() 

Xtrain,yTrain=vectorizer.fit_transform(LabeledWords['word']).toarray(),vectorizer.fit_transform(LabeledWords['label']).toarray() 

あなたは、その後のように上記ベクトラでお好みの分類器を訓練することができます

forest = RandomForestClassifier(n_estimators = 100) 
clf=forest.fit(Xtrain,yTrain) 

あなたのデータをテストするには:

for each_word,label in Preprocessed_list: 
    test_featuresX.append(vectorizer.transform(each_word),toarray()) 
    test_featuresY.append(label.toarray()) 
clf.score(test_featuresX,test_featuresY) 
関連する問題