基于朴素贝叶斯算法的新闻提要分类器
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
========
=>又一个通用朴素贝叶斯分类器。
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