現在、検索クエリを次の8つのタイプに分類するプロジェクトに取り組んでいます:{アスリート、俳優、アーティスト、政治家、地理、施設、QA、定義}。少し作業した後、層化された10分割交差検定で分類器を評価したときに、多層パーセプトロン分類器を使用して300のサンプルクエリのセットで78%正しく分類されたインスタンスをスコアリングすることができました。これはかなり良いと思います。
weka javaライブラリを使用して、すべてをJavaコードに実装したので、クエリを分類子に動的にフィードし、そのクエリタイプを取得するプログラムを作成できます。分類器のトレーニング部分全体を正常に実装できました。次のステップは、classifyInstance()またはdistributionForInstance()のいずれかを使用して、クエリが分類されるクラスを決定することです。
ただし、classifyInstance()は、実際のクエリタイプを取得するために私が知らないdouble値のみを返します。wekawik ispacesは私が使用できると言っています
unlabeled.classAttribute().value((int) clsLabel);
classifyInstance()を呼び出してクラスの文字列表現を取得した後、これは私の場合は常に空の文字列を返すようです。
distributionForInstance()を使用すると、0から1までの8つのdouble値を持つ配列を正常に取得できます(これは、8つのクエリタイプに分類するので良いことです)。しかし、この配列の順序は何ですか?結果配列の最初の要素は、トレーニングファイルで発生する最初のクラスですか?または、この結果配列に他の事前定義された要素の順序がありますか(アルファベット順など)?wekaのドキュメントには、これに関する情報は含まれていません。
誰かが私を助けてくれることを願っています!