打算绘制中文词云图?那你得先学会如何做中文文本分词。跟着我们的教程,一步步用Python来动手实践吧。

需求

在《如何用Python做词云》一文中,我们介绍了英文文本的词云制作方法。大家玩儿得可还高兴?

文中提过,选择英文文本作为示例,是因为处理起来最简单。但是很快就有读者尝试用中文文本做词云了。按照前文的方法,你成功了吗?

估计是不成功的。因为这里面缺了一个重要的步骤。

观察你的英文文本。你会发现英文单词之间采用空格作为强制分隔符。

例如:

Yes Minister is a satirical British sitcom written by Sir Antony Jay and Jonathan Lynn that was first transmitted by BBC Television between 1980 and 1984, split over three seven-episode series.

但是,中文的文本就没有这种空格区隔了。为了做词云,我们首先需要知道中文文本里面都有哪些“词”。

你可能觉得这根本不是问题——我一眼就能看出词和词之间的边界!

对,你当然可以。你可以人工处理1句、100句,甚至是10000句话。但是如果给你100万句话呢?

这就是人工处理和电脑自动化处理的最显著区别——规模。

别那么急着放弃啊,你可以用电脑来帮忙。

你的问题应该是:如何用电脑把中文文本正确拆分为一个个的单词呢?

这种工作,专业术语叫做分词。

在介绍分词工具及其安装之前,请确认你已经阅读过《如何用Python做词云》一文,并且按照其中的步骤做了相关的准备工作,然后再继续依照本文的介绍一步步实践。

分词

中文分词的工具有很多种。有的免费,有的收费。有的在你的笔记本电脑里就能安装使用,有的却需要联网做云计算。

今天给大家介绍的,是如何利用Python,在你的笔记本电脑上,免费做中文分词。

我们采用的工具,名称很有特点,叫做“ 结巴分词 ”。

为什么叫这么奇怪的名字?

读完本文,你自己应该就能想明白了。

我们先来安装这款分词工具。回到你的“终端”或者“命令提示符”下。

进入你之前建立好的demo文件夹。

输入以下命令:

pip install jieba

好了,现在你电脑里的Python已经知道该如何给中文分词了。

数据

在《如何用Python做词云》一文中,我们使用了英剧”Yes, minister“的维基百科介绍文本。这次我们又从维基百科上找到了这部英剧对应的中文页面。翻译名称叫做《是,大臣》。

将网页正文拷贝下来之后,存入文本文件yes-minister-cn.txt,并且将这个文件移动到我们的工作目录demo下面。

好了,我们有了用于分析的中文文本数据了。

先别忙着编程序。正式输入代码之前,我们还需要做一件事情,就是下载一份中文字体文件。

请到 这个网址 下载simsun.ttf。

下载后,将这个ttf字体文件也移动到demo目录下,跟文本文件放在一起。

代码

在命令行下,执行:

jupyter notebook

浏览器会自动开启,并且显示如下界面。

这里还有上一次词云制作时咱们的劳动成果。此时目录下多了一个文本文件,是"Yes, Minister"的中文介绍信息。

打开这个文件,浏览一下内容。

我们确认中文文本内容已经正确存储。

回到Jupyter笔记本的主页面。点击New按钮,新建一个笔记本(Notebook)。在Notebooks里面,请选择Python 2选项。

系统会提示我们输入Notebook的名称。为了和上次的英文词云制作笔记本区别,就叫它wordcloud-cn好了。

我们在网页里唯一的代码文本框里,输入以下3条语句。输入后,按Shift+Enter键执行。

filename = "yes-minister-cn.txt"

with open(filename) as f:

mytext = f.read()

然后我们尝试显示mytext的内容。输入以下语句之后,还是得按Shift+Enter键执行。

print(mytext)

显示的结果如下图所示。

既然中文文本内容读取没有问题,我们就开始分词吧。输入以下两行语句:

import jieba

mytext = " ".join(jieba.cut(mytext))

系统会提示一些信息,那是结巴分词第一次启用的时候需要做的准备工作。忽略就可以了。

分词的结果如何?我们来看看。输入:

print(mytext)

你就可以看到下图所示的分词结果了。

单词之间已经不再紧紧相连,而是用空格做了区隔,就如同英文单词间的自然划分一样。

你是不是迫不及待要用分词后的中文文本作词云了?

可以,输入以下语句:

from wordcloud import WordCloud

wordcloud = WordCloud().generate(mytext)

%pylab inline

import matplotlib.pyplot as plt

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis("off"

激动地期待着中文词云的出现?

可惜,你看到的词云是这个样子的。

你是不是非常愤怒,觉得这次又掉坑里了?

别着急,出现这样的结果,并不是分词或者词云绘制工具有问题,更不是因为咱们的教程步骤有误,只是因为字体缺失。词云绘制工具wordcloud默认使用的字体是英文的,不包含中文编码,所以才会方框一片。解决的办法,就是把你之前下载的simsun.ttf,作为指定输出字体。

输入以下语句:

from wordcloud import WordCloud

wordcloud = WordCloud(font_path="simsun.ttf").generate(mytext)

%pylab inline

import matplotlib.pyplot as plt

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis("off")

这次你看到的输出图形就变成了这个样子:

这样一来,我们就通过中文词云的制作过程,体会到了中文分词的必要性了。

这里给你留个思考题,对比一下此次生成的中文词云,和上次做出的英文词云:

这两个词云对应的文本都来自维基百科,描述的是同样一部剧,它们有什么异同?从这种对比中,你可以发现维基百科中英文介绍内容之间,有哪些有趣的规律?

讨论

掌握了本方法后,你自己做出了一张什么样的中文词云图?除了做词云以外,你还知道中文分词的哪些其他应用场景?欢迎留言,分享给大家。我们共同交流讨论。

喜欢请点赞。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。

如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。

python用中文怎么说-如何用Python做中文分词?相关推荐

  1. python处理excel表格大小-如何用python处理excel表格

    前面我们已经学到了很多Python在数学领域的应用,用Python编程可以轻松解决一些数学中的常见问题.当然Python的功能应用还远远不止于此,我们的很多日常工作也可以用Python来实现.今天南京 ...

  2. 用python画简单的动物-如何用python画简单的动物

    首先来看一下实现效果,如下图: 具体实现代码请看: (推荐学习:python视频教程)# -*- coding:utf-8 -*-# __author__ :kusy# __content__:文件说 ...

  3. python搭建自动化测试平台_如何用python语言搭建自动化测试环境

    原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...

  4. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  5. python rest api 测试_如何用Python编写REST API的单元测试

    在过去的几个月中,正在从事一个名为B的项目.它是带有简单Web UI的徽章生成器,用于添加数据并生成PDF可打印徽章.B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些 ...

  6. python 备份交换机_干货 | 如何用python实现每天定时备份交换机配置文件? 真香~...

    网 工 圈 关注 当交换机配置发生变化,如何自动备份配置到FTP上?2条命令搞定! 上期分享了交换机配置发生变化时,自动备份配置到FTP上的文章,后面有网友私信来问,龙哥,龙哥能不能教一下每天自动备份 ...

  7. python的out模式_如何用python中的DataFrame列的模式替换NA值?

    我对Python(和本网站)完全陌生,目前正试图用它们的模式替换特定数据帧列中的NA值.我试过了各种不起作用的方法.请帮我看看我做错了什么:如何用python中的DataFrame列的模式替换NA值? ...

  8. python最小化打开exe_如何用python使GoAgent窗口打开后自动最小化以及关闭之前的py.exe窗口...

    python:3.4 goagent:3.1.22-33 写了一个想在ipv4/6之间切换的小脚本 path=r'D:\Documents\Downloads\Downloads\goagent-go ...

  9. 用python处理excel表格_如何用python处理excel数据 | 用python处理excel表格数据类型

    python 读取EXCEL文件中的数据格式 扩展库 xlrd 读excle xlwt 写excle 直上搜就能下载 下载后使用 import xlrd 就可以读excle了 打开文件: xls = ...

最新文章

  1. Linux ENSP 搭建DHCP服务器并实现中继和Linux 下搭建DNS服务器(2个实验可跟做)
  2. 大数据教你实现预测未来,这不是梦
  3. Linux Shell中各种分号和括号的用法总结
  4. Linux 程序后台运行与删除
  5. 马冬晗学习计划表_一年时间提升学习和工作能力,我做对了这3点
  6. VSCode远程链接Could not establish connection to “hz.matpool.com”
  7. MS Sql中取每个表的大小,行数
  8. 初中计算机卡片的制作教案,【我的拼音卡片教案】制作拼音卡片
  9. Sublime安装使用插件pretty json
  10. C# for循环99乘法表
  11. 智能城市dqn算法交通信号灯调度_滴滴张博:智慧交通大脑是支撑城市可持续发展的重要基础设施...
  12. 字符全角半角转换及特殊符号转换
  13. Spinner用法案例
  14. YDOOK:ESP8266EX 管脚布局与定义
  15. Java内部类介绍 - 静态内部类和成员内部类
  16. 对于整数取反(取负NEG)运算的理解
  17. 光盘加密文件如何复制出来
  18. html2canvas的下载地址
  19. 2012年终总结 - I T征途
  20. Google Earth Engine ——GCOM-C 进行长期和持续的陆地地表温度数据集(JAXA/GCOM-C/L3/LAND/LAI/V2)

热门文章

  1. 平衡二叉树平衡因子怎么计算_平衡二叉树(AVL Tree)旋转机制分析
  2. 开发日记 20210311 重新定义未来
  3. IPK僵尸网络 看看其传播手法
  4. collections模块
  5. [转载]Outlook 2016 显示正在启动... 无法进入Outlook的解决方案
  6. mysql 的S 锁和X锁的区别
  7. 数学图形(1.10) 双曲线
  8. oracle 递归应用(挺复杂的)
  9. mfc笔记--摘录关于裁剪窗口区域的设置,WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
  10. JSEnhancements.vsix