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

newsFeedClassifier-CS331的Python项目详细描述


朴素贝叶斯分类器
========


=>又一个通用朴素贝叶斯分类器。

NaiveBayesClassifier
```


因此,您最好将此数据称为您的训练集。
"
来自NaiveBayesClassifier的导入标记器
来自NaiveBayesClassifier的导入标记器。Trainer导入Trainer
来自NaiveBayesClassifier的导入标记器。分类器导入标记器

NewsTrainer=Trainer(标记器。标记器(stop_words=[],签名"删除"=["?!%&;"])

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


对于新闻集中的新闻:
newstrainer.train(news['text',news['category'])

tokenizer.tokenizer(stop_words=[],signs_to_remove=["?!%&;"])

不可能减肥吗"
classification=newsscriptor.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下溢的可能性,因为
>;单个单词的概率可以任意小,而且
>;文档可以包含任意数量的文档。处理此情况的典型方法是将概率转换为
>;对数域并执行加法而不是乘法:
>;
>;log p(c_j d)~log(p(c_j))+sum i(log p(w_i c_j))
>;
>;其中i=1,…,k.请注意,这样做,我们将丢弃缩放因子p(d),分数不再是概率;
>;但是,分数的单调关系由
>;log函数保持。

您可能会发现下面的列表很有用:

*[昆虫示例][2]
*[斯坦福大学nlp-贝叶斯分类器][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如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求