Naive Bayesian使用“Bag of Words”方法进行主题检测

时间:2010-05-06 14:18:18

标签: machine-learning nlp data-mining naivebayes

我正在尝试实现一种天真的bayseian方法来查找给定文档或单词流的主题。是否有朴素贝叶斯方法,我可以找到这个?

另外,我正努力改进我的字典。最初,我有一堆映射到主题的单词(硬编码)。取决于已映射的单词以外的单词的出现次数。根据这些单词的出现,我想将它们添加到映射中,从而改进和学习映射到主题的新单词。并且还改变了单词的概率。

我该怎么做呢?我的方法是正确的吗?

哪种编程语言最适合实现?

1 个答案:

答案 0 :(得分:26)

朴素贝叶斯的现有实施

您可能最好只使用一个支持使用朴素贝叶斯进行文档分类的现有软件包,例如:

Python - 要使用基于Python的 Natural Language Toolkit (NLTK) 执行此操作,请参阅免费提供的Document Classification中的NLTK book部分。

Ruby - 如果您更喜欢Ruby,可以使用 Classifier gem。以下是检测 whether Family Guy quotes are funny or not-funny的示例代码。

Perl - Perl具有Algorithm::NaiveBayes模块,其中包含synopsis包中的示例用法代码段。

C# - C#程序员可以使用 nBayes 。该项目的主页包含简单垃圾邮件/非垃圾邮件分类器的示例代码。

Java - Java人员 Classifier4J 。您可以看到培训和评分代码段here

从关键字引导分类

听起来您想从一组知道某些主题提示的关键字开始,然后将这些关键字用于bootstrap a classifier

这是一个相当聪明的想法。看看McCallum和Nigam撰写的论文Text Classication by Bootstrapping with Keywords, EM and Shrinkage(1999)。通过遵循这种方法,他们能够将分类准确度从单独使用硬编码关键字获得的45%提高到使用自举Naive Bayes分类器获得的66%。对于他们的数据,后者接近人类的协议水平,因为人们在72%的时间内就文档标签达成一致。