zoukankan      html  css  js  c++  java
  • pandas之中文分词,词云,情感分析,语义分析4

    中文情感分析 - SnowNLP


    情感分析(Sentiment analysis,SA),又称倾向性分析、意见抽取(Opinion extraction)、意见挖掘(Opinion mining)、情感挖掘(Sentiment mining)、主观分析(Subjectivity analysis)

    情感分析是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程

    情感分析的目的是为了找出说话者/作者在某些话题上或者针对一个文本两极观点的态度。这个态度或许是他或她的个人判断或是评估,也许是他当时的情感状态(就是说,作者在做出这个言论时的情绪状态),或是作者有意向的情感交流(就是作者想要读者所体验的情绪)

    文本情感分析的应用非常广泛,如网络舆情风险分析,信息预测等。如通过Twitter用户情感预测股票走势,电影票房、选举结果等,均是将公众情绪与社会事件对比,发现一致性,并用于预测

    首先安装SnowNLP中文情感分析库:

    pip install snownlp

    SnowNLP(Simplified Chinese Text Processing),是一个python语言编写的类库,可以方便的处理中文文本内容,其开发受到了TextBlob的启发

    import pandas as pd
    import matplotlib.pyplot as plt
    from snownlp import SnowNLP
    

    案例分析

    1. 数据载入  
    2. 数据预处理
    3. 将所有数据打分
    4. 将分数合并会原表格
    5. 计算指标
    df = pd.read_excel('data/饭店留言数据.xlsx')
    # 截取一部分 columns(comments&date)
    0	这辈子最爱吃的火锅,一星期必吃一次啊!最近才知道他家还有免费鸡蛋羹………………炒鸡好吃炒鸡嫩...	2017-05-14 16:00:00
    1	第N次来了,还是喜欢?……<br><br>从还没上A餐厅的楼梯开始,服务员已经在那迎宾了,然...	2017-05-10 16:00:00
    2	大姨过生日,姐姐定的这家A餐厅的包间,服务真的是没得说,A餐厅的服务也是让我由衷的欣赏,很久...	2017-04-20 16:00:00
    3	A餐厅的服务哪家店都一样,体贴入微。这家店是我吃过的排队最短的一家,当然也介于工作日且比较晚...	2017-04-25 16:00:00
    4	因为下午要去天津站接人,然后我倩前几天就说想吃A餐厅,然后正好这有,就来这吃了。<br>来的...	2017-05-21 16:00:00
    5	A餐厅是我们的定点单位,单位大聚小聚都来这,所以享受VIP待遇,来了不用等位。这的菜品新鲜,...	2017-05-05 16:00:00
    
    # 2
    df.info()
    
    # 3
    def aaa(x):
        return SnowNLP(x).sentiments
    
    grade = df['comments'].apply(aaa)
    grade  # 科学计数法
    
    # 4 
    df['grade'] = grade
    df.head()
    
    # 5
    # 平均分
    df.grade.mean()
    # 中位数
    df.grade.median()
    # 快速分布
    df.grade.describe()
    基础结论:中位数比平均值高很多,说明有少量异常低的评分拉低了均值
    

    可视化

    df2 = df[['date', 'grade']].set_index('date').sort_index()
    # 看分数分布情况,直方图最合适
    df2.plot.hist()
    df2.plot.kde()
    plt.scatter(df2.index, df2['grade'])
    plt.boxplot(
        df['grade'],  # 数据
        showmeans = True, # 是否显示平均值,默认不显示
    
        widths = 0.5, # 柱子宽度
    
        vert = True, # 默认True纵向,False横向
        patch_artist = True,  # 是否填充颜色
        boxprops = {'facecolor':'#ffff00','color':'green'}, # 箱体样式
    )
    
    plt.grid(linewidth=0.2)
    
    #以分数排序,查看打分准确率、
    
    结论
    
    准确率比瞎猜高,但达不到人工打分准确率
    
    SnowNLP库的训练基准数据是基于电商销售产品训练的,对饭店留言数据的打分准确率一般
    
    做情感分析最好用户自行实现(网站增加打分功能,用户自行打分)
    

      

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    asp.net 网页标题、关键字、描述
    星级评分jQuery插件
    以jquery为基础的星星评分
    投票系统显示结果jQuery插件
    JAVASCRIPT模拟模式对话窗口
    Repeater 嵌套代码
    window服务程序安装卸载批处理文件
    c#window程序开发入门系列自学笔记
    jquery 模式对话框改进版
    php的正则表达式完全手册
  • 原文地址:https://www.cnblogs.com/harden13/p/13769873.html
Copyright © 2011-2022 走看看