2

BayesianClassifierクラスを使用してスパムを分類しています。問題は、複合語が認識されないことです。

たとえば、led zeppelinを一致として追加した場合、それを含む文は一致として認識されますが、一致として認識されません。

一致を追加するために、SimpleWordsDataSource の addMatch() を使用します

一致を求めるために、BayesianClassifierのisMatch()を使用しています

これを修正する方法についてのアイデアはありますか?


わかりました、洞察に感謝します。さらにソースコードを添付します。

SimpleWordsDataSource wds = new SimpleWordsDataSource();
BayesianClassifier classifier = new BayesianClassifier(wds);

wds.addMatch("queen");
wds.addMatch("led zeppelin");
wds.addMatch("the beatles");

classifier.isMatch("i listen to queen");// it is recognized as a match
classifier.isMatch("i listen to led zeppelin");// it is NOT recognized as a match
classifier.isMatch("i listen to the beatles");// it is NOT recognized as a match

今、私は BayesianClassifier の teacherMatch メソッドを使用していますが、異なる結果が得られました。led zeppelinを含む文は一致として分類されますが、これは問題ありません。しかし、 led itを含む文も一致として分類されますが、これは間違っています。

関連するコードは次のとおりです。

BayesianClassifier classifier = new BayesianClassifier();
classifier.teachMatch("led zeppelin");
classifier.isMatch("I listen to led zeppelin");//true
classifier.isMatch("I listen to led");//true
4

1 に答える 1

4

(私はclassifier4jを書きました)

より多くのデータでトレーニングする必要があります。

ベイジアン分類器は、一致すると見なされるものと一致しないものの統計モデルを作成することによって機能します。

十分なデータを提供すると、「ledとzeppelin」は一致することがわかりますが、「led」自体は一致しません。

于 2010-10-12T05:21:27.020 に答える