一、结巴分词的三种模式
(1)精确模式:把最有可能组成词语的词切开,没有冗余单词。
(2)全模式:把所有可能组成词语的词切开,有冗余单词。
(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词。
二、正则提取数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# 导数据
douyin = pd.read_csv('data/douyin.csv')
# 正则提取,并达到MySQL中group_concat的效果
temp = douyin['signature'].str.extractall(r'[^一-龥]*([一-龥]+)[^一-龥]*').copy()
temp = temp.reset_index().groupby('level_0').agg({0:list})[0].apply(lambda x: ','.join(x))
# 将提取出来的字符串进行分词,并剔除停用词
result0 = ','.join([','.join(jieba.lcut(statement)) for statement in temp]).split(',')
result1 = [x for x in result0 if x not in stop_words]
# 创建词频Series对象
important_words = pd.Series(result1).value_counts()[1:200]
important_words
三、绘制
# 导入绘制所需参考图像
bgimg = np.array(Image.open('data/bgimg.png'))
# 以参考图像的颜色作为词云图颜色
genclr = wordcloud.ImageColorGenerator(bgimg)
# 创建慈云图对象
wc = wordcloud.WordCloud(
# 指定字体路径
font_path='data/FZZJ-LongYTJW.TTF',
# 指定背景颜色
background_color='white',
# 指定最大词数
max_words=200,
# 指定最大和最小字号
max_font_size=300,
min_font_size=5,
# 指定随机种子
random_state=4,
# 指定词云图轮廓参考哪张图
mask=bgimg,
# 指定词云图颜色
color_func=genclr)
# 渲染文字
wc.generate_from_frequencies(important_words)
# 使用plt展示词云图
plt.figure(figsize=(24,24))
plt.imshow(wc)
plt.axis('off')