目录
  • 1 数据导入及预处理
    • 1.1 数据导入
    • 1.2 数据描述
    • 1.3 数据预处理
  • 2 情感分析
    • 2.1 情感分
    • 2.2 情感分直方图
    • 2.3 词云图
    • 2.4 关键词提取
  • 3 积极评论与消极评论
    • 3.1 积极评论与消极评论占比
    • 3.2 消极评论分析
  • 总结

    python实现简单的情感分析

    1 数据导入及预处理

    1.1 数据导入

    #  数据导入
    import pandas as pd
    data = pd.read_csv('../data/京东评论数据.csv')
    data.head()

    利用python实现简单的情感分析实例教程

    1.2 数据描述

    #  数据描述
    data.describe()

    利用python实现简单的情感分析实例教程

    1.3 数据预处理

    #  数据预处理
    #  取出sku_Id,content字段
    data1 = data[['sku_id', 'content']]
    data1.head(10)

    利用python实现简单的情感分析实例教程

    2 情感分析

    2.1 情感分

    #  情感分析
    from snownlp import SnowNLP
    data1['emotion'] = data1['content'].apply(lambda x: SnowNLP(x).sentiments)
    data1.head()

    利用python实现简单的情感分析实例教程

    #  情感数据描述
    data1.describe()

    利用python实现简单的情感分析实例教程

    emotion平均值为0.74,中位数为0.96,25%分位数为0.56,可见不到25%的数据造成了整体均值的较大下移。

    2.2 情感分直方图

    #  绘制情感分直方图
    import matplotlib.pyplot as plt
    import numpy as np
     
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
     
    bins = np.arange(0, 1.1, 0.1)
    plt.hist(data1['emotion'], bins, color = '#4F94CD', alpha=0.9)
    plt.xlim(0, 1)
    plt.xlabel('情感分')
    plt.ylabel('数量')
    plt.title('情感分直方图')
    plt.show()

    利用python实现简单的情感分析实例教程

    由直方图可见,评论内容两级分化较为严重;

    3637条评论中有约2200条评论情感分在[0.9,1]区间内;同时,有约500条评论情感分在[0,0.1]区间内。

    2.3 词云图

    #  绘制词云图(这儿没有做停用词处理)
    from wordcloud import WordCloud
    import jieba
     
    myfont = myfont = r'C:\Windows\Fonts\simhei.ttf'
    w = WordCloud(font_path=myfont)
    text = ''
    for i in data['content']:
        text += i
    data_cut = ' '.join(jieba.lcut(text))
    w.generate(data_cut)
    image = w.to_file('词云图.png')
    image

    利用python实现简单的情感分析实例教程

    2.4 关键词提取

    #  关键词提取top10
    #  这儿直接写import jieba运行会显示没有analyse属性
    from jieba import analyse
     
    key_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=())
    key_words

    利用python实现简单的情感分析实例教程

    以上关键词显示,消费者比较在意手机的“屏幕”“拍照”“手感”等特性,“华为”“小米”是出现频次最高的两个手机品牌。

    参数说明 :

    • sentence 需要提取的字符串,必须是str类型,不能是list
    • topK 提取前多少个关键字
    • withWeight 是否返回每个关键词的权重
    • allowPOS是允许的提取的词性,默认为allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名词、动名词、动词

    3 积极评论与消极评论

    3.1 积极评论与消极评论占比

    #  计算积极评论与消极评论各自的数目
    pos, neg = 0, 0
    for i in data1['emotion']:
        if i >= 0.5:
            pos += 1
        else:
            neg += 1
    print('积极评论数目为:', pos, '\n消极评论数目为:', neg)

    利用python实现简单的情感分析实例教程

    #  积极消极评论占比
    import matplotlib.pyplot as plt
     
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
     
    pie_labels = 'positive', 'negative'
    plt.pie([pos, neg], labels=pie_labels, autopct='%1.2f%%', shadow=True)
     
    plt.show()

    利用python实现简单的情感分析实例教程

    3.2 消极评论分析

    #  获取消极评论的数据
    data2 = data1[data1['emotion'] < 0.5]
    data2.head()

    利用python实现简单的情感分析实例教程

    #消极评论词云图(这儿没有做停用词处理)
    text2 = ''
    for s in data2['content']:
        text2 += s
    data_cut2 = ' '.join(jieba.lcut(text2))
    w.generate(data_cut2)
    image = w.to_file('消极评论词云.png')
    image

    利用python实现简单的情感分析实例教程

    #消极评论关键词top10
    key_words = jieba.analyse.extract_tags(sentence=text2, topK=10, withWeight=True, allowPOS=())
    key_words

    利用python实现简单的情感分析实例教程

    消极评论关键词显示,“屏幕”“快递”“充电”是造成用户体验不佳的几个重要因素;屏幕和充电问题有可能是手机不良品率过高或快递压迫;

    因此平台应注重提高手机品控,降低不良品率;另外应设法提升发货,配送,派件的效率和质量。

    总结

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。