初闻不知曲中意,再闻已是曲中人(网易音乐精选评论数据分析)

目录

1. 数据来源

和鲸社区-网易云精彩评论数据集

2. 数据预处理

import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba.analyse



# read in file with specified column names
df = pd.read_csv('网易云音乐精彩评论.csv', 
                 names=['用户Id', '昵称', '评论内容', '点赞数'], 
                 encoding='gbk')

encoding=’gbk’,因为csv文件是gbk编码的,如果不指定,会乱码。

3. 数据分析

# 分词2
word_list=[]
for comment in df['评论内容']:
    try:
        # topK: 返回几个 TF/IDF 权重最大的关键词,默认值为 20
        # withWeight: 如果为 True,返回一个 list,其中每个元素都是 (关键词, 权重) 二元组;
        # 如果为 False,返回一个 list,其中每个元素为关键词
        # allowPOS: 仅包括指定词性的词,默认值为空,即不筛选
        tags = jieba.analyse.extract_tags(comment, topK=10, withWeight=False, allowPOS=())
        for t in tags:
            word_list.append(t)
    except Exception as e:
        print(e)

# jieba.load_userdict('../myDict/myDict.txt') 
# convert list to dictionary
word_list = dict(pd.Series(word_list).value_counts())

结果如下:

{'首歌': 22,
 '评论': 19,
 '内容': 12,
 '成都': 10,
 '大哭': 8,
 '我们': 7,
 '自己': 7,
 '16': 7,
 '周杰伦': 7,
 '喜欢': 7,
 '音乐': 6,
 '初恋': 6,
 '时候': 6,
 '十年': 6,
 '单曲': 6,
 '网易': 5,
 '钟无艳': 5,
 '女朋友': 5,
 '七里香': 5,
 '我要': 4,
 '赵雷': 4,
 '回忆': 4,
 '开口': 4,
 '青春': 4,
 '考研': 4,
...
 '1800': 1,
 '五湖四海': 1,
 '义无反顾': 1,
 '牵挂': 1,
 ...}

4. 词云图

# 制作图云
def wordCloud(wordList):
    from wordcloud import WordCloud, ImageColorGenerator
    import matplotlib.pyplot as plt
    import numpy as np
    import PIL.Image as Image
    import os
    d = os.path.dirname(__file__)
    img = Image.open(os.path.join(d, "jupiter.png"))
    width = img.width/80
    height = img.height/80
    alice_coloring = np.array(img)
    my_wordcloud = WordCloud(background_color="white",
                             max_words=500, mask=alice_coloring,
                             max_font_size=200, random_state=42,
                             font_path=(os.path.join(d, "./PingFang.ttc")))
    my_wordcloud = my_wordcloud.generate_from_frequencies(wordList)

    image_colors = ImageColorGenerator(alice_coloring)
    plt.figure(figsize=(width, height))
    plt.imshow(my_wordcloud.recolor(color_func=image_colors))
    plt.imshow(my_wordcloud)
    plt.axis("off")
    # 通过设置subplots_adjust来控制画面外边框
    plt.subplots_adjust(bottom=.01, top=.99, left=.01, right=.99)
    plt.savefig("jupiter_wordcloud_1.png",dpi=900)
    plt.show()

wordCloud(word_list)

jupiter_wordcloud_1

wordcloud_2

5. 问题

    1. 分词结果不太满意,一些停用词没有去掉。
    1. 词云图的字体不太满意,需要自己找一些字体。
    1. 分词之前最好导入自己的词典,这样分词效果会更好。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦