classifier4J问题

时间:2010-07-18 00:16:04

标签: java bayesian

我正在使用 BayesianClassifier 类对垃圾邮件进行分类。问题是复合词不被识别。

例如,如果我将 led zeppelin 添加为匹配,则包含它的句子将不会被识别为匹配,即使它应该。

添加匹配项我正在使用 SimpleWordsDataSource addMatch()

要求匹配我正在使用贝叶斯分类 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的teachMatch方法,我得到了不同的结果。 包含 led zeppelin 的句子被归类为匹配,好的。但是包含 led 的句子也被归类为匹配,这是错误的。

以下是相关代码:

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

1 个答案:

答案 0 :(得分:4)

(我写了classifier4j)

您需要使用更多数据进行训练。

贝叶斯分类器通过创建被认为匹配和不匹配的统计模型来工作。

如果你给它足够的数据,它会得知“led和zeppelin”是一个匹配,但“led”本身并不是