朴素贝叶斯进行文本分类

  • 准备数据:从文本中构建词向量

将句子转换为向量

该函数的的第一个变量返回的是词条切分的文档集合,数据来源为斑点犬爱好者留言板;classVec为类别标签的集合,有两类:侮辱性和非侮辱性,由人工标注,用于训练程序可以自动检测侮辱性留言。

创建一个包含在所有在文档中出现的不重复的列表,set函数可以输出一个无重复元素的词表,|用以求两个集合的并集。

输入参数为词汇表或某个文档,输出的是文档向量,向量的每一元素为1或0,分别表示单词在输入文档中是否出现。思路为:创建一个和词汇表等长的向量 ,向量元素都为0;然后遍历文档中的所有单词,若出现词汇表中的单词,则将输入的文档向量中的对应值设为1。

试运行结果如下:Python3对于格式要求很严格,编码规范得牢记!

可以得出,在postingList中第一个和第四个列表所拥有的元素,在整个文档中的位置。

即完成了单词向向量的转换。

  • 训练算法:从词向量计算概率

思路:w为词向量,i表示文本类别:侮辱或非侮辱,p(ci)为每类文档占总文档的比例,假设每个词向量相互独立,p(w|ci)=p(w0|ci)p(w1|ci)p(w2|ci)p(w3|ci)...p(wN|ci)

伪代码为:

计算每个类别中的文档数目

对每篇训练文档:

      对每个类别:

             如果词条出现在文档中→增加该词条的计数值

             增加所有词条的计数值

     对每个类别:

             对每个词条:将该词条的数目除以总词条数目得到条件概率

    返回每个类别的条件概率

猜你喜欢

转载自blog.csdn.net/weixin_38527856/article/details/83755071