美文网首页数据分析
【Python情感分析】用python情感分析李子柒频道视频热门

【Python情感分析】用python情感分析李子柒频道视频热门

作者: 马哥python说 | 来源:发表于2022-04-26 08:22 被阅读0次

    一、事件背景

    今天是2021.12.2日,距离李子柒断更已经4个多月了,这是我在YouTube李子柒油管频道上,观看李子柒2021年7月14日上传的最后一条视频,我录制了视频下方的来自全世界各国网友的评论,全世界的网友们集体期待李子柒回归,瞬间泪奔。
    https://www.bilibili.com/video/BV1QL4y1p7dT/
    针对全世界网友的热门评论,怎么分析出网友的评论态度和舆论导向呢?于是我试着用python做了情感分析,得出了一些舆情导向的结论。

    二、python代码讲解

    下面,通过python代码(部分核心代码)逐一分解,这个情感分析是怎样实现的:

    首先,导入需要的库:

    import pandas as pd  # 数据分析库
    from textblob import TextBlob  # 英文情感分析库
    import matplotlib.pyplot as plt  # 画图
    from wordcloud import WordCloud  # 绘制词云图
    from wordcloud import ImageColorGenerator
    from PIL import Image
    import numpy as np
    

    然后,通过pandas读取excel评论数据(爬虫代码不做讲解,对爬虫代码感兴趣的小伙伴可以s我哦)

    file = "李子柒评论.xlsx"
    df = pd.read_excel(file, usecols=[1, 2, 3, 4, 5]) #读取评论数据
    v_cmt_list = df['text'].values.tolist() # 把评论字段转换为list
    print('length of v_cmt_list is:{}'.format(len(v_cmt_list)))
    

    下面是情感分析的代码:

    # 情感分析
    score_list = []  # 情感评分值
    tag_list = []  # 打标分类结果
    for comment in v_cmt_list:
        tag = ''
        judge = TextBlob(comment)
        sentiments_score = judge.sentiment.polarity
        score_list.append(sentiments_score)
        if sentiments_score < 0:
            tag = '消极'
        elif sentiments_score == 0:
            tag = '中性'
        else:
            tag = '积极'
        tag_list.append(tag)
    df['情感得分'] = score_list
    df['分析结果'] = tag_list
    df.to_excel('情感分析结果.xlsx', index=None)
    

    查看一下情感分析结果:

    df.groupby(by=['分析结果']).count()['text']  # 分组统计情感分析结果
    
    分析结果

    结果显示,中性和积极词汇占据一半以上,也就是说,大部分网友还是喜欢李子柒的视频的。

    最后是词云图绘制的代码:

    # 绘制词云图
    stopwords = ['the', 'a', 'and', 'of', 'it', 'her', 'she', 'if', 'I', 'is', 'not', 'your', 'there', 'this',
                 'that', 'to', 'you', 'in', 'as', 'for', 'are', 'so', 'was', 'but', 'with', 'they', 'have']  # 停用词
    coloring = np.array(Image.open("lzq3.jpeg"))
    backgroud_Image = coloring  # 读取背景图片
    wc = WordCloud(
        scale=3,  # 图片大小,清晰度
        background_color="white",  # 背景颜色
        max_words=1000,  # 词数量
        font_path='/System/Library/Fonts/SimHei.ttf',  # Mac字体文件路径,根据实际情况替换
        # font_path="C:\Windows\Fonts\simhei.ttf",  # Win字体文件路径,根据实际情况替换
        stopwords=stopwords,  # 停用词
        mask=backgroud_Image,  # 背景图片
        color_func=ImageColorGenerator(coloring),  # 根据原始图片颜色生成词云图颜色
        max_font_size=100,  # 设置字体最大值
        random_state=240  # 设置有多少种随机生成状态,即有多少种配色方案
    )
    wc.generate(v_cmt_str)  # 生成词云图
    wc.to_file('词云结果图.png')  # 保存图片文件
    display(Image.open('lzq3.jpeg'))  # 显示原始图片
    wc.to_image()  # 显示词云图
    

    词云图最后的展示效果如下:


    词云结果图

    这里需要说明的是,color_func=ImageColorGenerator(coloring)这句代码,能够根据原始图片颜色生成词云图颜色。细心的小伙伴应该能看出来,词云图的颜色配比和原始图片的颜色配比很接近了。

    三、同步输出

    讲解视频:
    https://www.bilibili.com/video/BV16F41187B4/


    马哥python说

    相关文章

      网友评论

        本文标题:【Python情感分析】用python情感分析李子柒频道视频热门

        本文链接:https://www.haomeiwen.com/subject/hbifyrtx.html