13

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

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

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

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

4

1 回答 1

27

朴素贝叶斯的现有实现

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

Python - 要使用基于 Python 的自然语言工具包 (NLTK)执行此操作,请参阅免费提供的NLTK 书中的文档分类部分。

Ruby - 如果 Ruby 更适合您,您可以使用Classifier gem。这是检测Family Guy 引用是否有趣的示例代码。

Perl - Perl 有Algorithm::NaiveBayes模块,在包概要中包含一个示例用法片段。

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

Java -Java 人有Classifier4J您可以在此处查看训练和评分代码片段。

从关键字引导分类

听起来您想从一组已知提示某些主题的关键字开始,然后使用这些关键字引导分类器

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

于 2010-05-06T18:07:51.057 回答