背景
想起前天爬虫拿回来的数据好像没怎么用,看了一下1000条评论有3w4千多字,然后今天决定对爬回来的回力帆布鞋的评论进行数据分析,把评论里面的关键字关键词统计出来并且制作词云图
一、思路
既然要统计关键词,那么首先就要句词分离,然后把分离出来没用的字或者符号过滤掉,然后进行统计。总体思路:词语分离->筛选词语->统计词语->出图
二、实现
1.词语分离
在词语分离前,我需要把mysql里面的数据放到txt文本里面,方便操作:
import pymysql
con = pymysql.connect(
host='127.0.0.1',port=3306,user='root',passwd ='123',db='huilipa',charset='utf8')
cur = con.cursor()
wri = open(r'D:\S\huilidata.txt','w') #打开txt
cur.execute('select pinglun from huilidata') #操作数据库
data = cur.fetchall() #接受数据库数据
for i in data:
# print(i)
wri.write(i[0]) #写入txt
wri.close() #关闭txt
写入完成后我们对立面的文字进行词语分离,词语分离使用jieba模块,这个模块可以将句子最精确地切开,十分适合文本分析。
import jieba
ttxt = open(r'D:\S\huilidata.txt',mode = 'r')
jieba.load_userdict(r'D:\S\2.txt') #添加自定义词典(2.txt必须是utf-8编码)
# print(ttxt.read())
key = jieba.cut(ttxt.read()) #句子切割
这里key就包含了切割后的所有词语,但是打印一看,发现很多一个字的,还有很多符号,这时我们就要把这些没用的数据过滤掉,拿到我们所有的词语。
2.筛选词语:
import jieba
cutdata = [] #用来存放所有关键词
def allword():
ttxt = open(r'D:\S\huilidata.txt', mode='r')
abandonwork = ',./?~!@#$%^&*()_+,。/*-+' #这里写要除掉的一丢丢符号应该包含日常句子的符号了
jieba.load_userdict(r'D:\S\2.txt') # 添加自定义词典(2.txt必须是utf-8编码)
# print(ttxt.read())
key = jieba.cut(ttxt.read())
for i in key :
if i not in abandonwork and len(i) != 1 and i !="": #过滤掉没用的字或者符号
cutdata.append(i)
这个时候cutdata已经包含了我们所有的关键词了。但是我想要的是统计他们,肯定有很多词是出现很多次的,我们下面来对他们进行统计,并且把出现多次的词语存起来。
3.统计关键词
def findkeyword():
b = set(cutdata)
for i in b:
count = 0
for j in cutdata:
if i == j :
count = count + 1
if count > 1 :
keywork.append(i)
print(i,':',count)
4.制作词云图:
这里使用wordcloud模块,专业出词云图的模块。
这里就贴出完成代码啦:
import jieba
import wordcloud
cutdata = []
keywork = []
def allword():
ttxt = open(r'D:\S\huilidata.txt', mode='r')
abandonwork = ',./?~!@#$%^&*()_+,。/*-+'
jieba.suggest_freq(('好看'), True) # 强调某个词
jieba.load_userdict(r'D:\S\2.txt') # 添加自定义词典(2.txt必须是utf-8编码)
# print(ttxt.read())
key = jieba.cut(ttxt.read())
for i in key :
if i not in abandonwork and len(i) != 1 and i !="":
cutdata.append(i)
def findkeyword():
b = set(cutdata)
for i in b:
count = 0
for j in cutdata:
if i == j :
count = count + 1
if count > 1 :
keywork.append(i)
print(f'{i}:{count}次')
def main():
allword()
findkeyword()
allwd = ",".join(keywork)
w = wordcloud.WordCloud(
background_color="pink", # 背景颜色
max_words=250, # 显示最大词数
font_path=r"C:\Windows\Fonts\simsun.ttc", # 使用字体
min_font_size=20, #字最小size
max_font_size=100, #字最大size
width=1000, # 宽度
height=1000 #长度
)
w.generate(allwd) #上图关键词
w.to_file(r"D:\S\15.png") #输出图片
if __name__ == '__main__':
main()
最后效果:
词语统计:
这里贴出一部分吧,还有很多很多很多词呢!然后制作的云图:
结束
好啦,前天爬回来的数据也算好好利用啦,那么回力的数据分析到此结束啦~