前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于词云可视化笔记三(pkuseg和中文词汇可视化)

关于词云可视化笔记三(pkuseg和中文词汇可视化)

作者头像
python与大数据分析
发布2022-03-11 13:12:51
4640
发布2022-03-11 13:12:51
举报
文章被收录于专栏:python与大数据分析

pkuseg是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。pkuseg具有如下几个特点:

高分词准确率。相比于其他的分词工具包,pkuseg的工具包在不同领域的数据上都大幅提高了分词的准确度。当然无法验证。

多领域分词。我们训练了多种不同领域的分词模型。根据待分词的领域特点,用户可以自由地选择不同的模型。

支持用户自训练模型。支持用户使用全新的标注数据进行训练。

git链接:https://github.com/lancopku/PKUSeg-python

本文主要包括几个版本的wordcloud输出方式

版本一是标准的pkuseg进行分词和展现

可以看出直接采用pkuseg也能分词,但分词效果不佳,不比jieba好多少。

版本二是追加停用词库后,再使用pkuseg进行分词和展现

增加停用词库后,再解析,效果增强不少,但一些新词汇未出现。

版本三加入自定义词库后,再使用pkuseg进行分词和展现

加入自定义词库后,可以看到pkuseg又提升了一些解析效率,但无关的词汇还是未过滤。

通过版本一、二、三演示了如何一步步提升分词的可用性,当然一两天的功夫很难全部了解pkuseg的全部功能。从用法上pkuseg和jieba相差无几,pkuseg不支持直接使用自定义词库,当然通过函数也能扩展;从分词的实际效果上也相差不大。

两者分词差别

jieba分词

词频

pkuseg分词

词频

('微信',

77),

('微信',

84),

('小程序',

64),

('小程序',

64),

('用户',

53),

('游戏',

56),

('小游戏',

32),

('用户',

54),

('平台',

32),

('希望',

32),

('希望',

32),

('平台',

30),

('事情',

30),

('事情',

30),

('一种',

27),

('信息',

22),

('公众',

24),

('公众号',

20),

('游戏',

23),

('产品',

18),

('信息',

20),

('手机',

17),

('产品',

18),

('企业',

17),

('手机',

17),

('App',

14),

('企业',

17),

('生活',

13),

('App',

14),

('赞赏',

13),

('生活',

13),

('思考',

12),

('订阅',

13),

('版本',

12),

('赞赏',

13),

('系统',

12),

('思考',

12),

('工具',

12),

('版本',

12)

('发布',

11)

代码示例

代码语言:javascript
复制
import pkuseg
import pprint
import matplotlib.pyplot as plt
from collections import Counter
from os import path
from PIL import Image
from wordcloud import WordCloud, STOPWORDS,ImageColorGenerator
#--------------------------版本一,标准的pkuseg输出-------------------------------
#此处下载并读取张小龙关于微信产品的演讲
d = path.dirname(__file__)
content = open(path.join(d,'speechchinese.txt')).read()
# 使用pkuseg缺省的词库进行分词处理
# 初始化pkuseg实例,和网上的不一样要大写pku
seg = pkuseg.PKUSeg()
#进行分词
text = seg.cut(content)
#输出格式为['张小龙', '演讲', '全文', ':', '刚刚', '出现', '的', '是', '我', '打', '游戏', '的', '画面']
#初始化wordcloud实例,并指定字体类型
wc = WordCloud(font_path='/home/djh/win_font/simhei.ttf',max_words=50)
wc.generate_from_text(" ".join(text)) #根据文本绘制云图
#输出<wordcloud.wordcloud.WordCloud object at 0x000001F060600208>
# 词云展示
plt.imshow(wc)
plt.axis("off")
plt.show()
# 使用pkuseg缺省的词库进行分词处理的词频情况
counter = Counter(text)
pprint.pprint(counter.most_common(20))
#[(',', 627), ('的', 526), ('一', 305), ('个', 255), ('我们', 250), ('是', 245)]
#----------------------------版本二,追加停用词库---------------------------------
#从网上下载了停用词词库,并追加了一些中英文标点符号,当然也可以自己再补充
stopwords = open(path.join(d,'stopword.txt'),encoding='gbk',errors='ignore').read()
#此处使用遍历停用词库生成新的分词
new_text = []
for w in text:
    if w not in stopwords:
        new_text.append(w)
#输出使用停用词库后的分词处理的词频情况
counter = Counter(new_text)
pprint.pprint(counter.most_common(20))
#比之前要出色一些,不过还是缺乏一些新词
#('微信', 84), ('程序', 63), ('游戏', 56), ('用户', 54), ('希望', 32), ('平台', 30), ('事情', 30), ('信息', 22)]
#---------------------------版本三,增加自定义词库--------------------------------
#根据语义背景补充一些自定义词库
lexicon = ['小程序', '朋友圈', '公众号','大数据','云计算','去中心化']  #
## 初始化pkuseg实例,初始化的时候要指定自定义词库字典
seg = pkuseg.PKUSeg(user_dict=lexicon)  # 加载模型,给定用户词典
#分词
text = seg.cut(content)
#此处使用遍历停用词库生成新的分词
stopwords = open(path.join(d,'stopword.txt'),encoding='gbk',errors='ignore').read()
new_text = []
for w in text:
    if w not in stopwords:
        new_text.append(w)
counter = Counter(new_text)
pprint.pprint(counter.most_common(20))
#[('微信', 84), ('小程序', 64), ('游戏', 56), ('用户', 54), ('希望', 32), ('平台', 30), ('事情', 30), ('信息', 22)]
#初始化wordcloud实例,并指定字体类型
wc = WordCloud(font_path='/home/djh/win_font/simhei.ttf',max_words=50)
#根据文本绘制云图
wc.generate_from_text(" ".join(new_text))#根据文本绘制云图
# 词云展示
plt.imshow(wc)
plt.axis("off")
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两者分词差别
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档