MOJITO 发布一周,爬一波弹幕分析下 (2)

然后使用分词工具对弹幕进行分词,我这里使用的分词工具是最好的 Python 中文分词组件 jieba ,没有安装过 jieba 的同学可以使用以下命令进行安装:

pip install jieba

使用 jieba 对刚才获得的弹幕 list 进行分词:

# jieba 分词 danmu_cut = [jieba.lcut(item) for item in danmu_list]

这样,我们获得了分词后的 danmu_cut ,这个同样是一个 list 。

接着我们对分词后的 danmu_cut 进行下一项操作,去除停用词:

# 获取停用词 with open("baidu_stopwords.txt",encoding="utf-8") as f: stop = f.read() stop_words = stop.split() # 去掉停用词后的最终词 s_data_cut = pd.Series(danmu_cut) all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])

这里我引入了一个 baidu_stopwords.txt 文件,这个文件是百度停用词库,这里我找到了几个常用的中文停用词库,来源: https://github.com/goto456/stopwords 。

词表文件 词表名
baidu_stopwords.txt   百度停用词表  
hit_stopwords.txt   哈工大停用词表  
scu_stopwords.txt   四川大学机器智能实验室停用词库  
cn_stopwords.txt   中文停用词表  

这里我使用的是百度停用词表,大家可以根据自己的需要使用,也可以对这几个停用词表先做整合后再使用,主要的目的就是去除一些无需关注的词,上面这几个停用词库我都会提交到代码仓库,有需要的自取。

接着我们统计去除停用词后的词频:

# 词频统计 all_words = [] for i in all_words_after: all_words.extend(i) word_count = pd.Series(all_words).value_counts()

最后一步就是生成我们的最终结果,词云图:

wordcloud.WordCloud( font_path='msyh.ttc', background_color="#fff", max_words=1000, max_font_size=200, random_state=42, width=900, height=1600 ).fit_words(word_count).to_file("wordcloud.png")

最终结果就是下面这个:

MOJITO 发布一周,爬一波弹幕分析下

从上面这个词云图中可以看到,粉丝对「MOJITO」这首歌是真爱啊,出现频率最高的就是 啊啊啊 和 爱 还有 粉 。

当然哈,这个 粉 也有可能是说 MV 当中那台骚气十足的粉色的老爷车。

还有一个出现频率比较高的是 爷青回 ,我估计这个意思应该是 爷的青春回来啦 ,确实,周董伴随着我这个年龄段的人一路走来,做为一位 79 年的人现在已经是 41 岁的「高龄」了,回首往昔,让人唏嘘不已。

当年一首 「双节棍」 火遍了中华大地,大街上的音像店整天都在循环这几首歌,在学校上学的我这一代人,基本上是人人都能哼两句,「快使用双截棍,哼哼哈嘿」成了我们这一代人共有的回忆。

智能情感倾向分析

我们还可以对弹幕进行一次情感倾向分析,这里我使用的是 「百度 AI 开放平台」 的情感倾向分析接口。

百度 AI 开放平台文档地址:https://ai.baidu.com/ai-doc/NLP/zk6z52hds

首先是根据文档接入 「百度 AI 开放平台」 ,获取 access_token ,代码如下:

# 获取 Baidu API access_token access_token_url = f'https://aip.baidubce.com/oauth/2.0/token?grant_type={grant_type}&client_id={client_id}&client_secret={client_secret}&' res = requests.post(access_token_url) access_token = res.json()['access_token'] # 通用情感接口 # sentiment_url = f'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={access_token}' # 定制化情感接口 sentiment_url = f'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify_custom?charset=UTF-8&access_token={access_token}'

百度 AI 开放平台有两个情感分析接口,一个是通用的,还有一个是定制化的,我这里使用的是经过训练的定制化的接口,如果没有定制化的接口,使用通用的接口也没有问题。

上面使用到的 grant_type , client_id , client_secret 这几个参数,大家注册一下就能得到, 「百度 AI 开放平台」 上的这些接口都有调用数量的限制,不过我们自己使用已经足够了。

然后读取我们刚才保存的弹幕文本:

with open("dan_mu.txt", encoding="utf-8") as f: txt = f.read() danmu_cat = txt.split("\n")

在调用接口获得情感倾向之前,我们还需要做一件事情,对弹幕进行一次处理,因为弹幕中会有一些 emoji 表情,而 emoji 直接请求百度的接口会返回错误,这里我使用另一个工具包对 emoji 表情进行处理。

首先安装工具包 emoji :

pip install emoji

使用是非常简单的,我们对弹幕数据使用 emoji 进行一次处理:

import emoji with open("dan_mu.txt", encoding="utf-8") as f: txt = f.read() danmu_list = txt.split("\n") for item in danmu_list: print(emoji.demojize(item))

我们的弹幕数据中是有这样的 emoji 表情的:

❤❤❤❤❤❤❤ # 处理后: :red_heart::red_heart::red_heart::red_heart::red_heart::red_heart::red_heart:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzydp.html