NLP 之 jieba (结巴)制作词云

NLP 之 jieba (结巴)制作词云

一 、jieba的导入

%pip install jieba

二、 jieba 结巴分词的几种模式及使用

  1. 精确模式

    • 精确划分,视图将句子最精确地切分,适合文本分析
    jieba.lcut(text,cul_all=False)
    
  2. 全局模式

    • 全模式 把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义

      jieba.lcut(text,cul_all=True)
      
  3. 搜索引擎模式

    • 搜索引擎模式,是在精确划分的基础上,再进行全模式划分,,提高召唤率,适合用于搜索引擎分词。

    • jieba.lcut_for_search(text)
      
  4. 展示三种模式

    text2 = '落霞与孤鹜齐飞,秋水共长天一色'
    
    print('精确搜索','/'.join(jieba.lcut(text2,cut_all=False)))
    print('全模式','/'.join(jieba.lcut(text2,cut_all=True)))
    print('搜索引擎模式','/'.join(jieba.lcut_for_search(text2)))
    
    """
    精确搜索     落霞与孤鹜齐飞/,/秋水共长天一色
    全模式       落霞/落霞与孤鹜齐飞/,/秋水/秋水共长天一色/长天/天一/一色
    搜索引擎模式  落霞/落霞与孤鹜齐飞/,/秋水/长天/天一/一色/秋水共长天一色
    """
    

如果有一些网络热词,能够被识别出来,不要被切分开,就要进行自定义一个词典,这个词典本身是txt文档,然后先试用jieba.load_userdict(‘文档地址’),再根据需求,使用jieba中任意一个模式进行切分。

text3 = '我是来自妈妈省的蓝色妖姬唱着只因你太美而来'
jieba.load_userdict('dict.txt')

print('精确模式','/'.join(jieba.lcut(text3,cut_all=False)))
print('全模式','/'.join(jieba.lcut(text3,cut_all=True)))
print('搜索引擎模式','/'.join(jieba.lcut_for_search(text3)))

"""
精确模式     我/是/来自/妈妈/省/的/蓝色妖姬/唱/着/只/因/你/太美而来
全模式       我/是/来自/妈妈/省/的/蓝色/蓝色妖姬/妖姬/唱/着/只因/你/太美/而来
搜索引擎模式  我/是/来自/妈妈/省/的/蓝色/妖姬/蓝色妖姬/唱/着/只/因/你/太美/而来/太美而来


"""

三、词云的过程

第一步:数据导入
  • 数据准备,制作词云的数据导入
  • 停用词导入及自定义停用词词典:网上找的停用词及自定义停用词
第二步:数据清洗
  • 去掉数据中的特殊符号或者说只保留中文,如去掉emoj符号,等一些特殊的对分析无用的符号。 方法是用正则方法。
  • 判断词云数据是否是字符串类型,是的话对数据进行切分,把所有的数据保留成一个长的字符串,用空格连接
第三步:准备好产生词云图的文本数据
  • 对清洗后的长字符串进行切分,对其值进行统计得到绘制词云的最终数据import_words.
第四步:制作词云图 这里需要导入worldcolud ,和从PTL导入Tmage
  • 使用PTL里面的 Imag 读取nd array的图片,这一步是通过读取图片的数据,保存成nd array.
  • 使用词云提取图片颜色生成器 ,worldcolund.Imagecolorgenerator( bgim)
  • 设置词云的背景颜色,词云显示的词数及最大最小字体等一些参数,然后将import_words传进来,plt.show就可以完成词云的绘制。、
  • 代码显示
import jieba
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
# 从列表中处理  拿到抖音数据里面的个性签名内容,使用结巴对语句进行切分
dou_yin_data = pd.read_csv('./douyin.csv')


# 哈工大、四川大学、百度等都有发布的停用词文件 可以在网上自行获取
# 读取停用词
stop_words_list = pd.read_csv('./stopwords.txt',encoding='gbk',header=None)
for statement in dou_yin_data.signature:
    print(statement)
# 只保留中文数据
good_words = dou_yin_data.signature.str.replace(r'[^\u4e00-\u9f5a]','')

# 产生字符串
content = ''
for statement in good_words :
    if type(statement) != str:
        continue
    words = jieba.lcut(statement,cut_all=False)
    for word in words:
        if word not in stop_words:
            if word not in stop_words_list:
                content += word + ' '
## 字符串切分,产生最终绘制词云的数据
import_words = Series(content.split(' ')).value_counts()[10:310]

# 绘制词云
from PIL import Image
import wordcloud
# 制作抖音大V签名的词云图
# 舆论分析 评论分析 反馈分析 建议分析

# 读取nd array 的图片
bgimg = np.array(Image.open('./bgimg.png'))
# 词云提取图片颜色生成器
genclr = wordcloud.ImageColorGenerator(bgimg)
wc = wordcloud.WordCloud(font_path='./FZZJ-LongYTJW.TTF',# 设置字体
                         background_color='#D4F6CC', # 背景颜色
                         max_words=200,
                         max_font_size=300,
                         min_font_size=5,
                         random_state=42,
                         mask=bgimg,
                         color_func=genclr)

# 渲染词云的文体
wc.generate_from_frequencies(import_words)

plt.figure(figsize=(18,18))
plt.imshow(wc)
plt.axis('off')

NLP 之 jieba (结巴)制作词云_第1张图片

你可能感兴趣的:(自然语言处理,python,搜索引擎)