2016-04-07 12 views
0

SVM-Light(ウェブサイトhttp://svmlight.joachims.org/)を使用しています。私はあなたに問題を尋ねたい。 私は "彼はスマートで、彼は良い学生です"という文を持っています。この文は肯定的な文です。この文章から単語のリストを作成すると、{1 - he、2 - is、3 - smart、4 - 、5 - a、6 - good、7 - 学生}。次に、文章を次のように書き換えます: "1 2 3 4 1 2 5 6 7"。そして、各単語の値は "1:0.4 2:0.2 3:0.8 4:0.3 1:0.2 2:0.4 5:0.5 6:0.7 7:0.6" 列車ファイルのフォーマットに従って、単語のインデックスはインデックス数が増えているので、「1 1:0.4 1:0.2 2:0.2 2:0.4 3:0.8 4:0.3 5:0.5 6:0.7 7:0.6」のように配置します。 しかし、「機能が増えている必要があります!!!」というエラーが表示されます。私はsvm_learnを実行します。私の文章は2つの "彼"の言葉と2つの "ある"という言葉を持っているので、私はこのエラーに気づいた。あなたの列車ファイルの間、各機能は1回だけ表示されます。 この問題はどのように解決する必要がありますか?あなたは私のために説明しますか? ありがとうございました。単語が文章中に何度も出現したときのsvmのトレインファイルの作成方法

答えて

0

同じ機能に対して複数の値を設定することはできません。 あなたの質問に書いたことから、このケースの解決策は、本質的にそれらの単語が文章の中で異なる値を持つため、いくつかの単語が2度見られるという事実を無視することだと思います。

あなたは文章中に多くの単語を持つことができます。それはあなたの最初の機能は文の最初の単語の重さになり、2番目の特徴は文の2番目の単語の重さ、3番目は文の3番目の単語の重さなどです。したがって、あなたの例では、特徴ベクトル[1:0.4 2:0.2 3:0.8 4:0.3 5:0.2 6:0.4 7:0.5 8:0.7 9:0.6]があります。このアプローチの問題は、異なる文章の長さが異なることです。この場合、SVMlightはすべての文章の長さが最長であると仮定し、残りの値は単純にゼロになります(これは本質的にあなたの入力にあるフィーチャの索引の背後にあるアイデアです:スパースデータの場合、ゼロ以外の値を持つフィーチャ)。これを言って、あなたのデータの2番目の文が「彼はスマートだけではなく、彼はまた良い生徒です」となると、の最初の文の特徴ベクトルは[1:0.4 2:0.2 3:0.8 4:0.3 5:0.2 6:0.4 7:0.5 8:0.7 9:0.6 10:0.0 11:0.0 12:0.0]と解釈されます。

別の解決策は、あなたがしたように「辞書」を作成し、その単語が文章内で複数回見られる場合は同じ単語の値を組み合わせることです。これは、最大/最小値、平均、合計、積などを取ることによって行うことができます。機能を組み合わせる方法は、アプリケーションのドメインによって異なります。たとえば、単語のすべての値の合計をとると、辞書の特徴ベクトルは、1:0.6 2:0.6 3:0.8 4:0.3 5:0.5 6:0.7 7:0.6

となります
関連する問題