我正在尝试实现一种朴素贝叶斯方法来查找给定文档或单词流的主题。我可以查找朴素贝叶斯方法吗?
此外,我正在努力改进我的字典。最初,我有一堆映射到主题的单词(硬编码)。取决于除已映射的单词之外的单词的出现。根据这些单词的出现,我想将它们添加到映射中,从而改进和学习映射到主题的新单词。并且还改变了单词的概率。
我应该怎样做呢?我的方法正确吗?
哪种编程语言最适合实现?
最佳答案
朴素贝叶斯的现有实现
您可能最好只使用支持使用朴素贝叶斯进行文档分类的现有软件包之一,例如:
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 。
这是一个相当聪明的想法。看看论文Text Classication by Bootstrapping with Keywords, EM and Shrinkage麦卡勒姆和尼加姆 (1999)。通过采用这种方法,他们能够将分类准确率从单独使用硬编码关键字的 45% 提高到使用自举朴素贝叶斯分类器的 66%。就他们的数据而言,后者接近人类的共识水平,因为人们在 72% 的时间里就文档标签达成了一致。
关于machine-learning - 使用 "Bag of Words"方法进行主题检测的朴素贝叶斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2781752/