1.jieba库的基本介绍

jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性:

  • 支持四种分词模式
    • 精确模式
    • 全模式
    • 搜索引擎模式
    • paddle模式
  • 支持繁体分词
  • 支持自定义词典
  • MIT 授权协议

2.jieba库使用

jieba.cut 和jieba.lcut

lcut 将返回的对象转化为list对象返回

参数解析

import jieba

jieba.cut(sentence, cut_all=False, HMM=True, use_paddle=False):
# sentence: 需要分词的字符串;
# cut_all: 参数用来控制是否采用全模式;
# HMM: 参数用来控制是否使用 HMM 模型;
# use_paddle: 参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny

精确模式(默认)

试图将句子最精确地切开,适合文本分析,不存在冗余单词

jieba_content = jieba.cut(join_contents, cut_all=False)

全模式

把文本中所有可能的词语都扫描出来,速度非常快,有冗余

jieba_content = jieba.cut(join_contents, cut_all=True)

搜索引擎模式

在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

jieba_content = jieba.cut_for_search(join_contents, cut_all=True)

paddle模式

利用 PaddlePaddle 深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。
paddle 模式使用需安装 paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1
目前paddle模式支持jieba v0.40及以上版本。
jieba v0.40以下版本,请升级jieba,pip installjieba --upgrade。 PaddlePaddle官网

import jieba
jieba.enable_paddle()
jieba_content = jieba.cut(join_contents, use_paddle=True)

词性筛选

标注 解释 标注 解释 标注 解释
a 形容词 mq 数量词 tg 时语素
ad 副形词 n 名词 u 助词
ag 形语素 ng 例:义 乳 亭 ud 例:得
an 名形词 nr 人名 ug 例:过
b 区别词 nrfg 也是人名 uj 例:的
c 连词 nrt 也是人名 ul 例:了
d 副词 ns 地名 uv 例:地
df 例:不要 nt 机构团体 uz 例:着
dg 副语素 nz 其他专名 v 动词
e 叹词 o 拟声词 vd 副动词
f 方位词 p 介词 vg 动语素
g 语素 q 量词 vi 例:沉溺于 等同于
h 前接成分 r 代词 vn 名动词
i 成语 rg 例:兹 vq 例:去浄 去过 唸过
j 简称略语 rr 人称代词 x 非语素字
k 后接成分 rz 例:这位 y 语气词
l 习用语 s 处所词 z 状态词
m 数词 t 时间词 zg 例:且 丗 丟

词性筛选

import jieba.posseg as pseg

words = pseg.cut(join_contents)
# lst = [x.word for x in words if x.flag == 'n']  # 只要名词
for word, flag in words:
    print(word, flag)
jieba_str = ''.join(contents)  # contents   ['今天', '明天']
        c = wordcloud.WordCloud(font_path='simsun.ttc',background_color='white',width=2560,height=1500, max_words=700)
        words = pseg.cut(jieba_str)
        word_class = ['v', 'n', 'a', 'ns', 'v', 'LOC']
        filter_word = []
        for word, flag in words:
            if flag in word_class:
                filter_word.append(word)

        c.generate(' '.join(filter_word))
        c.to_file('不踩雷.png')

3、wordcloud

wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。

安装

pip install wordcloud 

wordcloud 库把词云当作一个WordCloud对象

wordcloud.WordCloud()代表一个文本对应的词云
可以根据文本中词语出现的频率等参数绘制词云
绘制词云的形状、尺寸和颜色均可设定
以WordCloud对象为基础,配置参数、加载文本、输出文件

常规方法

方法 描述
w.generate('分割后的分词') WordCloud对象中加载文本txt。
w.generate('python and WordCloud')
w.to_file(filename) 将词云输出为图像文件,png或jpg格式
import wordcloud
c = wordcloud.WordCloud()           #1.配置对象参数
c.generate("wordcloud by python")  #2.加载词云文本
c.to_file("pywordcloud.png")      #3.输出词云文件

wordcloud如何将文本转化为词云

  • 1.分隔:以空格分隔单词
  • 2.统计:单词出现次数并过滤
  • 3.字体:根据统计配置字号
  • 4.布局:颜色环境尺寸

配置对象参数

w= wordcloud.WordCloud(<参数>)
参数 描述
width 指定词云对象生成图片的宽度,默认400像素
w=wordcloud.WordCloud(width=600)
height 指定词云对象生成图片的高度,默认200像素
w=wordcloud.WordCloud(height=400)
min_font_size 指定词云中字体的最小字号,默认4号
w=wordcloud.WordCloud(min_font_size=10)
max_font_size 指定词云中字体的最大字号,根据高度自动调节
w=wordcloud.WordCloud(max_font_size=20)
font_step 指定词云中字体字号的步进间隔,默认为1
w=wordcloud.WordCloud(font_step=2)
font_path 指定文体文件的路径,默认None
w=wordcloud.WordCloud(font_path="msyh.ttc")
max_words 指定词云显示的最大单词数量,默认200
w=wordcloud.WordCloud(max_words=20)
stop_words 指定词云的排除词列表,即不显示的单词列表
w=wordcloud.WordCloud(stop_words="Python")
mask 指定词云形状,默认为长方形,需要引用imread()函数
from scipy.msc import imread
mk=imread("pic.png")
w=wordcloud.WordCloud(mask=mk)
background_color 指定词云图片的背景颜色,默认为黑色
w=wordcloud.WordCloud(background_color="white")

实例

from wordcloud import WordCloud
import matplotlib.pyplot as plt
# from scipy.misc import imread
from imageio import imread
import jieba
f = open('火影忍者.txt','r',encoding='utf-8')
data = f.read()
res = jieba.lcut(data)

result = ''.join(res)
color_mask = imread('鸣人.jpg')

wc = WordCloud(
    mask = color_mask,
    font_path=r'search-ms:displayname=“本地磁盘%20(C%3A)”中的搜索结果&crumb=location:C%3A%5C\Fonts\ygyxsziti2.0.ttf',
    background_color='yellow',
    height=1300,
    width=2600,
    max_font_size=50,
    min_font_size=1,
)

wc.generate(result)
wc.to_file('火影忍者.png')
plt.imshow(wc)
plt.show()
 posted on 2019-10-31 14:04  Rannie`  阅读(724)  评论(0编辑  收藏  举报
去除动画
找回动画