65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 中的朴素贝叶斯分类器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.36/5 (24投票s)

2006 年 5 月 28 日

CPOL

1分钟阅读

viewsIcon

192255

downloadIcon

9575

C# 中的朴素贝叶斯分类器

Sample Image - pict.gif

引言

我正在寻找一种将短文本分类到几个类别的方法。 一种简单但可能足够的方法似乎是朴素贝叶斯分类。 在寻找一些现成的东西时,我发现了很多用 Perl 或 Java 实现的方案。 我能找到的唯一 CLR 实现是 NClassifier,但它不能进行多类别分类。 因此,我决定自己编写一个。

背景

互联网上有大量关于贝叶斯分类理论的信息。 维基百科 有一个很好的介绍。

Using the Code

首先,创建一个 BayesClassifier.Classifier 的实例。

BayesClassifier.Classifier m_Classifier = new BayesClassifier.Classifier();

提示:您可以尝试使用 BayesClassifier.ExcludedWords 来定义您认为对分类不相关的单词。 这可以导致更小的字典,从而加快分类速度。

然后定义类别并教导每个类别

m_Classifier.TeachCategory("Cat1", new System.IO.StreamReader(file));
m_Classifier.TeachPhrases("Cat2", new string[] { "Hi", "HoHo" });

最后,方法 BayesClassifier.Classifier.Classify 将返回分类结果。

Dictionary<string, double> score = 
    m_Classifier.Classify(new System.IO.StreamReader(file));

如果您有任何问题或建议,请告诉我,并告诉我您对朴素贝叶斯方法的适用性有何经验。(因为(错误的)词语独立性假设可能会影响结果)。

历史

  • 2006 年 5 月 28 日:版本 1.0
© . All rights reserved.