0

文字列を入力として受け取り、それをいくつかのラベルに分類する分類タスクがあります。トレーニング データは次のようになります。

Text1: label_1
Text2: label_2
Text3: label_1

weka を使用すると、多くの分類で例外が発生します。

weka.core.UnsupportedAttributeTypeException: weka.classifiers.functions.MultilayerPerceptron: Cannot handle string attributes!
    at weka.core.Capabilities.test(Capabilities.java:979)
    at weka.core.Capabilities.test(Capabilities.java:868)
    at weka.core.Capabilities.test(Capabilities.java:1084)
    at weka.core.Capabilities.test(Capabilities.java:1022)
    at weka.core.Capabilities.testWithFail(Capabilities.java:1301)
4

1 に答える 1

4

何を達成しようとしているのかを正確に理解するのは難しいですが、機械学習では、ほとんどの分類子は文字列属性ではなく、数値/バイナリ属性を探しています。

実行できることの1つは、モデルを使用してフィーチャスペースを数値/バイナリ属性に変換することです。BagofWordsモデルは一般的なソリューションです。

このモデルによると、あなたがしなければならないことは次のとおりです。

  1. データベース内のすべての「機能」(文字列)を反復処理し、文字列/単語ごとに番号/機能を割り当てます
  2. 分類された例ごとに、機能スペースが変更された新しいインスタンスを作成します。単語/文字列ごとに、(ステップ1からの)番号があります。したがって、この番号に一致する属性を、テキスト内のこの単語の出現回数に設定します。 。ラベルは同じままです
  3. 新しい(数値)特徴空間を使用して、変更された例で学習アルゴリズムを実行します
  4. 分類中に、認識されない単語に遭遇した場合(以前は単語がなく、属性番号が割り当てられていない場合)-黙って無視するか、ヒューリスティックを使用して何らかの形で接続されているかどうかを予測できますあなたが見た一言に。手始めに、私はそれを無視し、後で最適化するためにこのステップに戻ってきます。
于 2012-12-29T15:04:05.520 に答える