使用机器学习的方法对于在线评论进行情感分析

本项目的目的是:通过运用机器学习的方法,设计在线评论的情感分析模型,并且分析其效果。分为如下几个部分:

目录

1、在线评论情感分析系统的简单介绍

2、特征工程

3、所采用的机器学习方法

4、测试分析

5、结论


1、在线评论情感分析系统的简单介绍

    本篇研究的内容是通过机器学习方法来研究文本评论内容中的情感倾向性。众所周知,网络中的评论是非常重要的,但是它的量很大,所以大部分评论内容都被浪费掉了。所以通过研究全体评论的内容,可以尽可能的利用这种无形资产。我们在这里以大众点评-北京王府井外婆家为例子。本项目的流程是

1、获取评论内容

2、预处理预料文件

3、对文本进行特征工程

4、通过机器学习模型进行建模

5、测试效果

     获取评论内容的方式是通过python中scrapy来获取在线评论,其中分为了有图片和无图片的评论。根据以往经验,有图片的评论更有意义,所以要把他们给区分出来。

    接下来需要对于预料进行预处理。下载好的原始预料包含了大量的噪音,而且这种情况下计算机根本无法识别。所以在这个步骤中,最重要的两点是去除噪音以及合理分词。

取出噪音的第一步是把一些无意义的符号都给去除掉。然后用现有的停用词语表和分词表进行分词以及词性标注。但是这里的问题在于这些词典未必的那么适合现在的这种餐厅文本。所以一方面我先通过一些输入法的餐饮美食词库来扩充的我的词典,然后再后文使用word2vec时,通过计算相关性来再次发掘新的特殊词语。在这一步中有时候容易把词组给错误分出来,我的办法是可以通过词性组合和否定词组合来人工提炼出一些新的适用于本评论的词组。

2、特征工程

    接下来就是要进入特征工程了。众所周知,计算机是看不懂文本的,我们需要对于文本进行编码转换才可以让计算机进行学习。具体来看就是把一条一条的评论和正负相关性以{x,y}的形式输入给计算机,最终获得学习后的模型。但是如果直接用one-hot编码进行向量化,不仅效率会非常的低(因为维度很高),而且很多没必要的词语也掺杂进去了,那就让结果非常的差。所以首先我们要用tf-idf的方式进行词语权重计算,然后选取比较靠前的权重词语,舍弃掉比较靠后的词语。至于阈值怎么界定,这个只能自己尝试,原则是尽可能舍弃评论中大部分的废话以及保留尽可能多的信息。

    至于y值,我这里采用的方式是根据标签。2星1星的标签被认为是-1,5星和4星的标签被认为是+1。3星的评论我先不用。但是这里遇到的问题是,好的倾向肯定要远大于差的倾向。所以这里我采用的方式就是适当的扩展一些差的评论的数量,从而达到稍为平衡的情况。

    接下来我们采用w2v的方式对于整个文本进行向量化,这种向量化不仅仅能进行编码,而且还能衡量词语之间的相关联性。在一些关联上的计算大有可为。在进行向量化之后,我们便可以准备下一步的训练了。

3、所采用的机器学习方法

    在本次项目中,我们采取的是朴素贝叶斯、C4.5分类树、BAGGING等方式进行计算机。最后根据10fold方法,发现朴素贝叶斯、C4.5分类树对于分类的结果相对不错。但是做这个项目的时候,没有用到GBDT、stacking等方法,这是可以继续改进的地方。

4、测试分析

这里的测试分析一方面是通过计算各种指标,画图来分析。另一方面是选取一些3星的评论,进行测试。然后人工衡量一下情感的倾向是否和机器判别的是否类似来进行衡量。

5、结论

这个是我本科临近毕业时做的项目,至今已经过去好几年了。现在想想,这个应该是我第一次上手的机器学习相关项目,之前几乎没有任何基础,完全是自己一个人通过和别人讨论,看别人的项目和文章来模仿学习。但也是自己独立的把这个大体的流程过了一遍。不足的地方有很多,比如在获取数据的是否scrapy爬虫的使用不太熟练,对于网站的反作弊机制不太了解导致经常失败。在特征工程阶段,降维这里还可以进一步的拓展一下,以及如何更加自动化的组建新的词组。后面的机器学习算法中,我可以使用更加集成的模型进行操作,以及优化词向量特征从而完成的更有效率。

希望以后如果能继续从事这方面的工作,可以在此基础上做的更好,也能在现实中有一定的应用。

猜你喜欢

转载自blog.csdn.net/u010929628/article/details/88532847