1

私は現在、Stanford Classifier (2013 年 4 月 4 日にリリースされたバージョン 2.1.8) に取り組んでおり、内部研究プロジェクト用の Java ラッパーを作成しています。ClassifierDemo.java (Classifier zip ファイルに付属) に基づいて、シリアル化されたトレーニング済みモデルとプロパティ ファイルを呼び出して、一度に 1 つの文字列を処理することができました。スタンフォード分類子はファイルのみを処理できることに注意してください。入力文字列が読み取られて一時ファイルに保存されると、分類子はその処理を開始します。メソッドtrainedClassifier.classOfは、トレーニングされたモデル(myClassifier.ser.gz)を使用して、指定された文字列のクラスを出力できます。ただし、信頼スコアを一緒に出力する方法が見つかりません (参照: http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/classify/ColumnDataClassifier.html )。

欲望の出力は文字列ですカテゴリ: ダミー信頼スコア: 0.85

以下は、ラッパーで使用する Java クラス/メソッドです。

         //.....
         LinearClassifier<String, String> trainedClassifier = 
         IOUtils.readObjectFromFile("myClassifier.ser.gz");

         //Have to call *.prop every time
         ColumnDataClassifier myProp = 
           new ColumnDataClassifier("myClassifierProp.prop");

         //Specify the temporary one sentence file saved in class-tmp.txt
         for (String line : ObjectBank.getLineIterator("class-tmp.txt")) 
               { Datum<String,String> classType = myProp.makeDatumFromLine(line, 0); 
                 classOutput = trainedClassifier.classOf(classType);

                 System.out.println("stringCategory: "+ classOutput + "/n");
                  //end of for
                  //.....
4

1 に答える 1

1

Counter<L> scoresOf(Datum<L,F> example);Classifier インターフェイスにあるメソッド (Classifier のラベルをキーとし、各クラスのスコア (正規化されていない対数確率) を値とするカウンターを構築します)を使用してスコアを取得できます。次のように使用できますtrainedClassifier.scoresOf(classType)Counter<String>これは、この特定のケースではa を返します。出力クラスのスコアを見つけるには、次のコードを使用できます。

score = Double.toString(trainedClassifier.scoresOf(classType).getCount(classOutput));
System.out.println("Confidence score: " + score);

上記のようなプロジェクトで行いました。この方法を試すこともできます:

score = trainedClassifier.scoreOf(classType, classOutput);

これも仕事になると思います。

詳細については 、Stanford LinearClassifier のドキュメントStanford LinearClassifier の実装を参照してください。

于 2014-01-30T13:41:45.547 に答える