利用朴素贝叶斯做论坛帖子分类.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用朴素贝叶斯做论坛帖子分类

使用java语言从底层实现了“多项式朴素贝叶斯文本分类”,并使用互信息为评价指标做特征选择,来优化模型。基于最优的模型对“蛋蛋网”的帖子做文本分类。数据获取编写爬虫,从北师大“蛋蛋网”上爬取所有标题中含有“图书馆”三个字的帖子和回复信息。共有3062条帖子数据。我们对其中1082条数据进行人工标注,划分成测试集、训练集用来模型训练。基于训练的模型,对剩下的2000多条帖子做分类。数据预处理及EDA分析数据的预处理主要有一下三步:说明:1.去噪音。按照对文本的理解,自定义一些噪音范围,如“提示: 作者被禁止或删除内容自动屏蔽”,“ @bnuxinxin”“回复 14楼的帖子”等。使用正则表达式匹配,在文本中去掉这些噪音。具体实现见程序Preprocessing.class2.分词。使用中科院的NLPIR分词软件,调用其API接口,导入自定义词典fenci_dict.txt,将文本分词并做词性标注。3.按照词性等去停用词。根据对文本的理解以及以往的经验,保留了词性为形容词、名词、动词、状态词、处所词、时间词、习用词、简略词的词语,对其他词性词语做了删除处理。具体实现程序见DeleteStopWords.java的deleteByPOS()函数。后使用停用词表chinese_stopword.txt,去除停用词、符号等,见程序DeleteStopWords.java的deleteFuhao()函数。最终,原始数据经过预处理,形成的文档为“处理好的已标注数据(用于训练和测试的).txt”和“处理好的待分类数据.txt”,其中处理过程中所有的数据记录见文件“文本预处理(过程).xlsx”。进入模型的数据准备因选择使用多项式贝叶斯文本分类(具体的选择原因见下面章节的说明),多项式模型是词条生成模型,对文档的处理是建一个文档map,具体为map[D][](每一行对应的列是该doc中所出现的词)。具体的实现步骤:说明:具体实现:1.统计所有非重复词项,建一个词典(即对每一个词进行编号),具体见程序CountSignalWords.java.基于此对词项编号。建立的词典见文档“signalWords.txt”,其中词项按照编号的顺序呈现。2.按照词项编号,给文档建map。具体程序见mappingForDoc.java文档map的具体表现形式为矩阵trainingmap[D][].每一行对应着一个doc,其中第一列对应着该doc的类别编号,往后对应着该doc在具体位置上的词的编号。3.划分测试集和训练集将“预处理后数据(已标注).txt”文本中前900篇做为训练集,后121篇文档作为测试集。最终训练集和训练集的map为文本“trainingmap.txt”及“testingmap.txt”。文本的第一列为类编号。最终基于这两个文本(“trainingmap.txt”及“testingmap.txt”)进行模型的训练和测试。算法的选择及依据我们选择使用“基于多项式的朴素贝叶斯文本分类”方法,具体的选择原因、模型原理、模型评价方法,说明如下:模型复杂度贝叶斯分类模型,需要估计的参数为p(c)(即每一个类的先验概率)和P(t|c)(即选定一个类的条件下,一个词t出现的后验概率)。(这两个矩阵也就是具体的模型的呈现形式)。其参数估计的预处理阶段可以在对训练集的首次扫描中完成。参数估计的时间复杂度为O(C*V),模型评价阶段的时间复杂度为O(C*L)。因此无论是训练过程还是评价过程,扫描数据的时间复杂度都是线性的。(其中C为类的数目,V为词典的数目(即所有出现的非重复词的书目),L为doc数目)。模型的性能贝叶斯分类模型的分类决策取决于那个类别得分最高,并不关注类别得分的精准性。故而其估计效果可能不好,但是分类效果往往不错。而且其由于复杂度低以及具有较好的精确率,而且对于“概念漂移”具有较好的鲁棒性,故而是文本分类中被广泛使用。我们使用的数据集是论坛的帖子及回复信息,时间跨度为2006-2015年。文本在长度上不够规范,且时间跨度长,可能出现“主题漂移”的现象。综合考虑到数据特点及预期效果后,决定使用贝叶斯分类。使用基于多项的模型原因贝叶斯分类在具体的模型实现时,可以选择“多项式”模型和“贝努利”模型。多项式模型是词条生成模型,对文档的处理是建一个文档map,具体为map[D][](每一行对应的列是该doc中所出现的词),而贝努利模型是文档生成模型,其对文档的处理是生成一个词袋wordbag[D][V]。从矩阵形式上考虑,贝努利模型容易形成巨大的稀疏矩阵。从性能上考虑,多项式模型考虑词项多次出现的现象,能够处理更长的文档,也能够应对更多的词项特征feature的情况(即在文档长度较长,且词典较大的情况下适用。),而贝努利模型只看词项在具体doc中是否出现,

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档