我正在使用 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
答案 0 :(得分:4)
(我写了classifier4j)
您需要使用更多数据进行训练。
贝叶斯分类器通过创建被认为匹配和不匹配的统计模型来工作。
如果你给它足够的数据,它会得知“led和zeppelin”是一个匹配,但“led”本身并不是