实战1 鸿蒙系统评论简单分析(nlp)
随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文将介绍nlp中常见的情感分析。其中数据来源于B站某些关于鸿蒙系统视频下的评论;通过爬虫完成数据的本地化保存,经过数据清洗,建立正则表达式匹配模式,将符合模式的字符串替换掉;基于SnowNLP情感分析模型判断鸿蒙系统在线评论情感倾向,生成好评集与坏评集,通过wordcloud、imageio建立各自的词云图,通过建立LDA模型,得到主题模型。
华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行华为开发者大会(HDC.2019)上正式发布的操作系统。华为鸿蒙是基于微内核的全场景分布式OS。华为自2012年开始研发这款操作系统,其具有轻量化、小巧、功能强大的优势,率先应用在智能手表、智慧屏、车载设备、智能音箱等智能终端上,鸿蒙OS基于分布架构,天生流畅,内核安全,能够带来终端之间实现能力互相共享
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
代码如下(示例):
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')
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") #词云图保存
记得制造停用词!停用词可以用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) #添加
好评词云:
差评词云:
差评数据:
从词云结果上来看,评论主题是鸿蒙、华为、安卓等,鸿蒙系统与安卓系统有较多相似之处,不少评论说鸿蒙是另一个安卓。同时,在涉及到华为手机的地方,难免少不了苹果手机、小米手机等。网友门往往喜欢将几个手机厂商做对比;不少网友反映,鸿蒙系统的流畅度等较安卓系统高,同时也有较多的人乐于支持国产,希望华为及麒麟芯片越来越好。
它主要用于生成文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类。利用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模型进行主题词的提取。