鸿蒙系统评论简单分析(nlp)

NLP学习

实战1 鸿蒙系统评论简单分析(nlp)


前言

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文将介绍nlp中常见的情感分析。其中数据来源于B站某些关于鸿蒙系统视频下的评论;通过爬虫完成数据的本地化保存,经过数据清洗,建立正则表达式匹配模式,将符合模式的字符串替换掉;基于SnowNLP情感分析模型判断鸿蒙系统在线评论情感倾向,生成好评集与坏评集,通过wordcloud、imageio建立各自的词云图,通过建立LDA模型,得到主题模型。


一、鸿蒙是什么?

华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行华为开发者大会(HDC.2019)上正式发布的操作系统。华为鸿蒙是基于微内核的全场景分布式OS。华为自2012年开始研发这款操作系统,其具有轻量化、小巧、功能强大的优势,率先应用在智能手表、智慧屏、车载设备、智能音箱等智能终端上,鸿蒙OS基于分布架构,天生流畅,内核安全,能够带来终端之间实现能力互相共享

二、使用步骤

1.引入库

import re
import jieba
import pandas as pd
import jieba.analyse as analyse
import numpy as np
from collections import Counter
from wordcloud import WordCloud, STOPWORDS  #词云图
from imageio import imread
from sklearn.feature_extraction.text import CountVectorizer  #词频
from gensim import corpora, models, similarities #LDA

2.读入评论数据完成情感分类

代码如下(示例):

text1 = pd.read_csv('总评论数据.csv')
good_text = []  #好的集合
bad_text = []   #不好的集合
sentimentslist = []
for i in range(len(text1)):
    tmp = text1.iloc[i,0]
    s = SnowNLP(str(tmp))
    if s.sentiments >=0.4:  #大于等于0.4认为是好评
        good_text.append(tmp) #对应的文本添加
    else:
        bad_text.append(tmp) #对应的文本添加
    sentimentslist.append(s.sentiments)
#好评
good_df = pd.DataFrame(good_text)
good_df.to_csv('good_text.txt',index = None,encoding = 'utf-8_sig')

#差评
bad_df = pd.DataFrame(bad_text)
bad_df.to_csv('bad_text.txt',index = None,encoding = 'utf-8_sig')

总评论数据如下:
在这里插入图片描述


3.对所有评论绘制词云图


with open('语料.txt',encoding='utf-8') as fn1:
    textgood = fn1.read()    # 使用read方法读取整段文本
# 制造停用词
f=open('stop_words.txt', encoding='gbk')
stopwords_list = [] #正文部分

for line in f: #逐行读取
    stopwords_list.append(line[:-1])

my_stopwords = set(STOPWORDS)     # 这里的STOPWORDS是从wordcloud导入的一个变量
for i in stopwords_list: 
    my_stopwords.add(i) #添加
#textgood 词云

停用词stop_words.txt:

在这里插入图片描述
以下是生成词云图的代码:


contents = textgood #全部读取为字符串
#print("contents变量的类型:", type(contents))

# 使用jieba分词,获取词的列表
contents_cut = jieba.cut(contents)
#print("contents_cut变量的类型:", type(contents_cut))
contents_list = " ".join(contents_cut)
#print("contents_list变量的类型:", type(contents_list))

# 制作词云图,collocations避免词云图中词的重复,mask定义词云图的形状,图片要有背景色
wc = WordCloud(stopwords=my_stopwords, collocations=False, 
               background_color="white", 
               font_path=r"SimHei.ttf",
               width=400, height=300, random_state=42, 
               mask=imread('yun.jpg',pilmode="RGB"))  #原图nz.jpg
wc.generate(contents_list)
wc.to_file("ciyun.png") #词云图保存

得到的词云:
在这里插入图片描述

4.对好评差评评论分别绘制

记得制造停用词!停用词可以用STOPWORDS库,也可以自己去网上找停用词文档

# 制造停用词
f=open('stop_words.txt', encoding='gbk')
stopwords_list = [] #正文部分

for line in f: #逐行读取
    stopwords_list.append(line[:-1])

my_stopwords = set(STOPWORDS)     # 这里的STOPWORDS是从wordcloud导入的一个变量
for i in stopwords_list: 
    my_stopwords.add(i) #添加

好评词云:
在这里插入图片描述差评词云:
在这里插入图片描述差评数据:
在这里插入图片描述从词云结果上来看,评论主题是鸿蒙、华为、安卓等,鸿蒙系统与安卓系统有较多相似之处,不少评论说鸿蒙是另一个安卓。同时,在涉及到华为手机的地方,难免少不了苹果手机、小米手机等。网友门往往喜欢将几个手机厂商做对比;不少网友反映,鸿蒙系统的流畅度等较安卓系统高,同时也有较多的人乐于支持国产,希望华为及麒麟芯片越来越好。

5.LDA主题模型

它主要用于生成文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类。利用from gensim import corpora, models, similarities。可以轻松使用LDA模型

#正面
post_dict = corpora.Dictionary(post[2])  # 建立词典
post_corpus = [post_dict.doc2bow(i) for i in post[2]]
post_lda = models.LdaModel(post_corpus, num_topics=10, id2word=post_dict)  # LDA模型训练
#for i in range(2):
   # print(post_lda.print_topic(i))   # 输出每个主题

好评主题:
在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了shownlp算法的使用,
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,主要利用了其中的情绪分析,用于判断一篇文章是正面的还是负面的。经过情感分类后,对每类的评论数据进行词云图的绘制,再利用封装好的LDA模型进行主题词的提取。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值