0

スパム メッセージと非スパム メッセージの分類に weka を使用しようとしています。

ラベル付けされた何十万ものスパム メッセージと、別の何十万ものラベル付けされた非スパム メッセージをトレーニング データ セットとして使用stringtowordvectorして、クラシアーをトレーニングするためのフィルターとして使用します。の結果crossValidateModelは非常に良好です。ただし、トレーニング セットから他のメッセージを分類する信頼性を確保するために、スタンドアロン テスト セットを使用してクラシアーを評価したいと考えています。

私の質問:

stringtowordvectorトレーニング arff ファイルとは独立したスタンドアロンの .arff ファイルを作成するために、テスト データ セットに対しても使用する必要があります。2 つのデータ セットの両方に存在する同じ単語には、それぞれ 2 つの異なる属性インデックスがあります。 2 つの .arff ファイル。たとえば、「money」という単語10は、トレーニング .arff ファイルではマトリックス インデックスを持っていますが、テスト .arff ファイル内では50th属性としてインデックス化されています。

既にトレーニングされた分類器が 2 つのデータ セット内のこれらすべての単語を一致させないのではないかと心配しています。これらの単語には異なるマトリックス インデックスがあるためです。より具体的に{1 1,2 1,3 5}は、トレーニング .arff のベクトルは を"i want to to to to to...."表しますが、テスト用の .arff ファイルでは、この同じベクトルが を表し"money does not not not not ....."ます。では、この検証はどのように信頼できるのでしょうか?

ではcrossValidateModel、同じ arff ファイルのインスタンスを使用するため、weka はインデックスと単語を正しく一致させる必要があります。私の目的は、膨大な数のラベル付きデータセットを使用してトレーニングし、それを使用して、フィードされたラベルなしメッセージを 1 つ分類することです。1 つのメッセージを分類するたびに、このメッセージを .arff ファイルに変換する必要があります。このファイルには、トレーニング .arff ファイルとはまったく異なる属性リストとマトリックス インデックスが含まれています。(私は Windows ツールを使用していません。プログラムで weka .jar API を使用しています)。何か助けはありますか?

4

1 に答える 1

0

目的を達成するには、トレーニング セットから機能マップ ファイルを作成する必要があります。通常、機能マップ ファイルは次の形式です。

someword:1
someotherword:2
yetanotherword:3
...

これにより、すべての単語が何らかのインデックスに効果的にマップされます。したがって、トレーニング セット内のすべてのファイルを反復処理し、トレーニング セット内に存在するすべての単語を、ARFF 内の単語のインデックスを表す一意の ID にマップします。

したがって、トレーニング セットに次のような単語を含む 1 つのファイルが含まれているとし"i want to to to to to make money"ます。特徴マップは次のようになります。

i:1
want:2
to:3
make:4
money:5

ARFF の属性は次のようになります。

@ATTRIBUTE i NUMERIC
@ATTRIBUTE want NUMERIC
@ATTRIBUTE to NUMERIC
@ATTRIBUTE make NUMERIC
@ATTRIBUTE money NUMERIC

各属性は、単語が電子メールに表示された回数を表します。

次に、テスト セットの ARFF を作成する場合は、テスト セット内のすべてのファイルを反復処理し、出くわしたすべての単語について、機能マップで調べます。単語が特徴マップにある場合、その単語がマップされているインデックスで属性の値をインクリメントすることがわかっています。単語が特徴マップにない場合、分類器はその単語でトレーニングされておらず、その単語が存在することさえ知らないため、無視します。

これにより、トレーニング セットと完全に整列したテスト セットの属性が保持されます。

テスト セットのメールの属性値を取得するときに単語をすばやく検索できるように、単語 ( ) から属性インデックス ( ) への JavaHashMap<String, Integer>マッピングとして機能マップ ファイルを読み込むことをお勧めします。StringInteger

于 2017-07-20T21:26:16.300 に答える