2

我正在使用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 的teachingMatch 方法,我得到了不同的结果。包含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 and zeppelin”是匹配的,但“led”本身不是

于 2010-10-12T05:21:27.020 回答