基于朴素贝叶斯算法的新闻提要分类器

newsFeedClassifierCS331的Python项目详细描述


朴素贝叶斯分类法例如,

`` python
""
>假设你有一些新闻文本,并且知道它们的类别。
你想用这些预先分类/预先分类的文本来训练一个系统。因此,您最好将此数据称为您的培训集。
"
来自NaiveBayesClassifier的导入标记器
来自NaiveBayesClassifier的导入标记器。Trainer导入Trainer
来自NaiveBayesClassifier的导入标记器。分类器导入标记器

NewsTrainer=Trainer(标记器。标记器(stop_words=[],sign_to_rEMOVE=!%&;"])

{'text':'不要忽视锻炼','category':'health'},
{'text':'叙利亚是主要问题,奥巴马说,'category':'politics'},
{'text':'吃东西减肥','category':'health'},
{'text':'你不应该吃太多,'category':'health'}
]

设置:
newstrainer.train(news['text',news['category'])

!%&;"])

classification变量保存了按概率值排序的可能类别:print classification,显然你需要的训练数据比上面的例子要多得多。实际上,像这个例子中这样的几行文字是不可能成为足够的训练集的。





相反,这里引用了一个最有说服力的解释。



>;贝叶斯分类刷新器:假设您有一组类
>;(例如类别)c:={c 1,…,cu n},以及一个文档d,包含单词d:={w1,…,wu k}。我们希望确定在给定一组与文档和类相关联的训练数据的情况下,文档属于某个C类的概率
>;
>;
>;
>;根据贝叶斯定理,我们得到了
>;
>;p(c_j_d)=p(d_c_j)*p(c_j)/p(d)。
>;
>;
>;lhs是给定文档本身,文档属于c_j
>;类的概率(实际上,这意味着该文档中出现的单词
>;频率),我们的程序将
>;计算每个j的该概率,并找出最有可能的
>;为该文档分类。
>;
>;p(c_j)被称为"优先"概率,或文档通常属于c_j的概率,而不首先看到
>;文档。p(d c_j)是看到这样一个
>;文档的概率,因为它属于c_j。在这里,通过假设单词
>;独立出现在文档中(这是"天真的"假设),我们可以估计
>;
>;p(d c_j)~=p(w_1 c_j)*…*p(w_k c_j)
>;
>;其中p(w_i_c_j)是看到给定单词的概率a
>;给定类的文档。最后,p(d)只能被视为一个
>;比例因子,与分类无关,
>;除非您希望将结果分数标准化并实际看到
>;概率。在这种情况下,请注意,
>;
>;p(d)=和j(p(d c_j)*p(c_j))
>;
>;执行这些计算的一个实际问题是计算p(d c_j)时出现float64下溢的可能性,因为
>;单个单词的概率可以任意小,nd a
>;文档可以包含任意数量的文档。处理此情况的典型方法是将概率转换为
>;日志域并执行加法而不是乘法:
>;
>;log p(c_j d)~log(p(c_j))+sum_i(log p(w_i c_j))
>;
>;其中i=1,…,k。请注意,通过执行t他说,我们放弃了标度因子p(d),分数不再是概率;
>;但是,分数的单调关系由
>;log函数保持。

lpful:

*[昆虫示例][2]
*[斯坦福大学nlp-贝叶斯分类器][3]


改进
这个分类器使用一个非常简单的标记器,它是一个将句子拆分成单词的模块。如果你的训练集很大,你可以依赖可用的标记器,否则你需要一个更好的标记器专门用于你的训练文本的语言。

\references
[1]:https://github.com/jbrukh/bayesian/blob/master/bayesian.go
[2]:http://www.cs.ucr.edu/~eamonn/ce/bayesian%20classification%20with昆虫示例.pdf
[3]:http://nlp.stanford.edu/ir book/html/htmledition/naive-bayes-text-classification-1.html
[4]:https://github.com/muatik/naive-bayes-classifier

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java实现双锁并发队列   java如何更改SpringWS 2.4.4版或更高版本中maxOccurs的默认限制?   java Selenium RC如何处理动态行?   java何时引入Javac StringBuilder/StringBuffer优化?   java mediaplayer在R.raw Android上失败   java JPA2:不区分大小写,就像在任何地方匹配一样   如何从JDK15中提取java预览类文件?   java与mySQL删除查询不一致   从Shutdownow()返回的java列表<Runnable>无法转换为提交的Runnable   java如何从回调接口获取对象值?   java如何获得视图的高度,在xml中可见性和高度定义为wrap_内容?   postgresql Mybatis在启动时遇到“由以下原因引起:java.net.UnknownHostException:localhost”,为什么?   带有实例调用的方法调用的java intellij格式化程序换行   由于特定的第三方库,java Proguard产生运行时错误   动画JAVA JPanel同时滑出和滑入