2017-04-09 6 views
0

SVMクラシファイアをsuccessfulyに実装しました。私はscikitのアプローチを使用していません。私は現在、さまざまなタイプのデータでそれを訓練しています。今、私は単一のテキスト入力のためにそれをテストしたいと思います。 私はパンダを使ってみましたが、私は自分のアプローチを変えなければならなかったので、私はそれを使わないことに決めました。 クラシファイアは、ポジティブ、ネガティブ、ニュートラルのラベルを使用した感情分析に使用されています。クラシファイアに送られるデータセットは、ツイッターからのツイートで構成されています。ここで は私の分級だ:https://pastebin.com/JZ5LVLW7クラシファイアのバイナリ機能ベクトルを作成するには

だから、私はが私の機能リストと比較し、バイナリーベクターを生成し、文字列の入力を取るのpythonで関数を設計する上で助けを必要としています。他の選択肢がある場合は、提案してください。 例:テキスト入力が「Footballはヨーロッパで人気のあるスポーツ」 したがって、提案された機能は(既にテストデータの助けによって生成された)機能リストをスキャンし、「football」、機能リストをスキャンすると、[...、1,0,1,1]のようになります。 、0,0,0、...]である。

+0

分類子とは何か、対象とは何ですか? – aisensiy

+0

いくつかの詳細を読み飛ばして申し訳ありません。クラシファイアは、ポジティブ、ネガティブ、ニュートラルのラベルによる感情分析用で、ツイートのデータセットから抽出された機能を含んでいます。 – Monty

+0

これで、テキスト入力用にワンホット機能を生成することになりますか? scikitにはそのためのテキスト機能ツールがいくつかあります。 – aisensiy

答えて

0

興味のある単語と同じサイズのホットエンコーダを使用してボキャブラリを作成します。テキストファイルを読んだり、ボキャブラリ内の単語を見つけた場合はホットエンコーダを更新してください。このコードはうまくいくはずです。

vocabulary = ['Football', 'Europe'] # Put your targer words in here 
hot_encoder = [0] * len(vocabulary) 
binary_bag = dict(zip(vocabulary, hot_encoder)) 
with open('text.txt', 'r') as f: #Put your text sample in here 
    words = [word for line in f for word in line.split()] 
    for word in words: 
     if word in vocabulary and binary_bag[word] == 0: 
      binary_bag[word] = 1 
+0

あなたの答えをありがとう!もし私が出力内のラベルを隠すことができれば。例:['Football':1、 'Europe':0 ..]の代わりに[1,0,0 ..]だけでもかまいませんか? – Monty

+0

この手順には注意してください。あなたは辞書を使っているので、辞書は順序を維持していないことを覚えておく必要があります。したがって、この目標を達成するのに役立つ初期リストを使用する必要があります。このコードはうまくいくはずです: 'idxのための列挙型(ボキャブラリー)のキー: hot_encoder [idx] =バイナリバグ[キー]' – Arthur

+0

ちょうど明らかである、これは追加のコードです:) – Arthur

関連する問題