基于Python的商品评论文本情感分析
作者:曾小芹 余宏
来源:《电脑知识与技术》2020年第08期
        摘要:文本情感分析是自然语言处理的重要过程。研究首先运用Selenium爬虫抓取评论文本,通过Jieba分词工具对文本进行分词、词性标注及关键词词云的生成,再选用适用于中文文本处理的snowNLP库对评论文本进行情感计算和结果可视化,并通过准确率和召回率验证了研究结果,将对结果进行了详细分析。最后,给出了进一步研究方向。
        关键词:中文文本情感分析;SnowNLP;Python;NLP
        中图分类号:TP3 文献标识码:A
        文章编号:1009-3044(2020)08-0181-03
        文本情感研究是计算机语言学、人工智能、机器学习、信息检索、数据挖掘等交叉领域的研究热点,具有高度综合性和实用性。文本情感分析就是对文本的显性主观性或隐性关联性信息进行分析,让机器感受人类的感情从而更深入地理解人类语言,为自然语言处理(NLP)的研究提供有效帮助。而NLP在诸多实际应用如个性化推荐系统、信息安全过滤系统、网络用户兴趣挖掘、网线预警系统等的决策制定中都有产生带来巨大的经济、社会效益。为此,对文本情感识别具有重要的学术研究意义及社会经济价值。
        1 主要相关技术简介
        1.1 SnowNLP库
        Python有多个工具库用于自然语言处理,但绝大多数是针对英文的处理。由于中英文的诸多差异,很多库不能直接拿来使用,要扩展也不简单。SnowNLP库是一个用Python语言编写的专门处理中文文本的类库,与其他类库不同的是它的实现没有依靠NLTK,所有算法均是自主实现,且自带语料库和情感字典。SnowNLP支持多种中文文本处理操作包括:中文分词、词性标注、情感分析、文本分类、转换成拼音、繁体转简体、提取文本关键词、提取文本摘要及计算文本相似度等[1],功能十分全面。
        1.2 Selenium爬蟲
        传统的爬虫通过直接模拟HTTP请求来爬取站点信息,但当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创版权得不到保护,且传统的方式和浏览器访问差异比较明显,当前很多网站网页都有反爬虫机制,要想获取网页内容就没有那么轻松了。Selenium是自动化浏览器技术,通过驱动浏览器来模拟真实浏览器完成网络行为,最终拿到网页渲染后
的信息。整个过程就如真正的用户在操作,为此,它用于爬虫躲避反爬机制再合适不过。Selenium爬虫支持多种语言及多种浏览器.不用去分析每个请求的具体参数,比起传统的爬虫开发起来更容易,它唯一的不足是速度慢,如果对爬虫的速度没有要求,那使用Selenium是个非常不错的选择。当然,在实际的操作过程中,还会遇到很多意外,比如,虽然Selenium完全模拟了人工操作,给反爬增加了困难,但如果网站对请求频率做限制的话,Selenium同样会被封杀,所以通常还得给浏览器设置代理技术等。
        2 SnowNLP库情感分析
        文本情感分析又称为文本倾向性分析和意见挖掘,是对带有情感彩的主观性文本进行分析、处理、归纳和推理预测的过程,其中情感分析还可以细分为情感极性(倾向)、情感程度及主客观分析等。一般来说,情感可以从多层次、多角度进行分类,中国传统文化中就有“七情”——好、恶、乐、怒、哀、惧和欲。在实际的语言应用场景中,不能对一个文本进行一分为两的划分,且情感倾向存在极性和强度,不能单纯地将情感词归为某一类等问题。为此,为了精准计算文本情感值,文本情感分析行为应该建立在当前基准情感词典基础上,关注文本词语在不同情感类别中的强度值,计算出不同语境下词语情感,进而得到文本情感
值。当然,本文为简化处理,暂时将文本情感划为两类,关于情感极性与强度的衡量问题将作为下一研究阶段的重点。
        利用SnowNLP库的文本情感分析的基本流程如下:
        (1)自定义爬虫抓取信息保存至文件。根据研究需要可抓取不同字段信息保存到不同类型的文件。Selenium爬虫首先要创建浏览器句柄即加载浏览器驱动,再定位页面元素来获取信息文本。
        (2)中文分词、词性标注及可视化显示关键词。中文分词工具也有很多,snowNLP本身能完成,但其准确率不如Jieba分词,为此,本次研究采用Jieba完成分词等工作。为了直观表现、对比文本关键词的重要性,采用WordCloud生成词云的形式来完成结果的可视化步骤。
        (3)情感计算,结果可视化。snowNLP中情感计算实现过程很简单,只要文本调用sentiments方法即可,具体使用见实例。但其实在sentlments方法中调用了sentIment下的分类方法,Sentiment对象首先调用load方法加载训练好的数据字典,然后再调用classify方法,
在classify方法中实际调用的是Bayes对象中的classify方法,具体可查看SnowNLP库中的sentIment文件夹下的一init_文件等。再运用Matplotlib生成情感分数分布柱状图和情感波动曲线图来实现结果可视化。
        (4)结果评估。结果可以使用准确率、召回率来衡量。召回率用来度量完整性或灵敏度。较高的召回意味着更少的假负,而较低的召回意味着更多的假负。提高召回率往往就会降低精确度,两者往往难以同时达到最理想的状态。
        3 SnowNLP库情感分析实例
        本研究目的是用SnowNLP库来分析下豆瓣上书籍的短语文本情感,详细过程如下:
        (1)获取评论文本。其实无论使用什么方式抓取文本,都要仔细分析所需信息存在于页面的哪些标签以及在标签的哪些属性里。本研究使用Selenium来爬取所需实验文本,主要抓取的是豆瓣上的关于《Python编程快速上手》这本书的所有短评评论,将所有评论存储在txt文本中,同时也将其他与评论相关的字段如评论用户名、用户链接、评论时间、推荐星数、评论等信息一同存储在csv文件,以备后续研究所用。部分代码口1如下所示:
        c= open(”book-douban. csv”,”w”,encoding= 'utf-8’)#写文件
        writer= csv.writer(c,dialect=(”excel”))#写入对象
        writer.writerow([”序号”,”用户名”,”评分”,”评分标题”,”有用数”,”日期”,”评论”])
        driver= webdriver.Firefox0
        i=lpython网络爬虫书籍推荐
        while i<20:
        url="https://book. douban. com/subject/26836700/comments/hot?p="+ str(i)
        (url)
        eleml=driver. find_elements_by_xpath("//div[@class= 'ava_tar'ya")
        elem2= driver.find_elements_by_xpath ("//span[@class=7 com-ment-info'yspan[ll")
        elem3= driver.find_elements_by_xpath ("//span[@class=7com-ment-vote 7]/span[1n
        elem4= driver.find_elements_by_xpath ("//span[@class=7 com-ment-inf0 7]/span[2]”)
        elem5 = driver. find_elements_by_xpath("//span[@class=7shortT’)
        tlist=[]
        k=( )
        while k<20:
        num= ia:20+k+1#序号

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。