中文分词

所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。

由于英文词与词自带空格作为分隔符,相比于中文分词要简单的多。我们在做中文分词时,需要把词语从一整段话中筛出来,困难之处在于,汉语表达博大精深,一段话往往有不同的切分方法。

所幸这不是我们需要担心的,Python中的Jieba库提供了现成的解决方案:

import jieba
text="李小璐给王思聪买了微博热搜。"
result=jieba.cut(text)
print("切分结果:  "+",".join(result))

jiaba调用了自己的分词算法,将切分好的文本按逗号分隔符分开,得到下面结果

切分结果:  李小璐,给,王思聪,买,了,微博热,搜,。

可见切分结果不尽如人意,比较明显的是,“微博”,“热搜”就没有被识别出来,其次有一些词,比如“了” “买”以及标点符号,显然我们不想让这些词出现在词云里,因为它们本身没什么意义。

特殊名词

对于某些特别的名词,为了使得其切分时不被分开,我们可以选择在切分前强调一下这些名词,比如:

import jieba
text="李小璐给王思聪买了微博热搜。"#强调特殊名词
jieba.suggest_freq(('微博'), True)
jieba.suggest_freq(('热搜'), True)
result=jieba.cut(text)
print("切分结果:  "+",".join(result))
切分结果:  李小璐,给,王思聪,买,了,微博,热搜,。

还可以将特殊用词加入用户自定义词典,实现相同的效果:

jieba.load_userdict("./utils/jieba_user_dict.txt")

jieba.load_userdict()

        Structure of dict file:word1 freq1 word_type1word2 freq2 word_type2...Word type may be ignored'''

文本清洗

  1. 切分之后一些特殊的符号会单独成词,这些词会影响我们之后的分析。
  2. 对于“了”,“的”这样长度为一的词,显然对我们分析文本没有任何帮助。处理的方法为将长度为1的词全部剔除掉。

示例

import jieba
#读取标点符号库
f=open("utils/stopwords.txt","r")
stopwords={}.fromkeys(f.read().split("\n"))
f.close()
#加载用户自定义词典
jieba.load_userdict("./utils/jieba_user_dict.txt")
segs=jieba.cut(text)
mytext_list=[]
#文本清洗
for seg in segs:if seg not in stopwords and seg!=" " and len(seg)!=1:mytext_list.append(seg.replace(" ",""))
cloud_text=",".join(mytext_list)

绘制词云

做好了中文分词,下一步即是绘制词云了。这里我们使用了另一个比较强大的库WordCloud。

from wordcloud import WordCloud
wc = WordCloud(background_color="white", #背景颜色max_words=200, #显示最大词数font_path="./font/wb.ttf",  #使用字体min_font_size=15,max_font_size=50, width=400  #图幅宽度)
wc.generate(cloud_text)
wc.to_file("pic.png")

WordCloud在生成对象时,提供了多个参数:

Parameters|  ----------|  font_path : string|        使用的字体库|  width : int (default=400)|      图片宽度|  height : int (default=200)|      图片高度|  mask : nd-array or None (default=None)|      图片背景参考形状  |  scale : float (default=1)|      图幅放大、缩小系数  |  min_font_size : int (default=4)|      最小的字符|  min_font_size : int (default=4)|      最大的字符|  max_words : number (default=200)|      最多显示的词数|  stopwords : set of strings or None|      不需要显示的词|  background_color : color value (default="black")|      背景颜色|  ......

绘制指定形状的词云


在绘制词云的时候,可以通过WordCloud的mask参数,可以指定词图的轮廓,绘制成各种形状的图片。比如我们想用以上这张图片,WordCloud会识别出除纯白的的部分作为轮廓。具体实现如下:

#加载需要使用的类库
from PIL import Image
import numpy as np
from wordcloud import WordCloud, ImageColorGenerator
from matplotlib import pyplot as plt
#加载背景图片
cloud_mask = np.array(Image.open("./bc_img/heart.jpeg"))
#忽略显示的词
st=set(["东西","这是"])
#生成wordcloud对象
wc = WordCloud(background_color="white", mask=cloud_mask,max_words=200,font_path="./font/wb.ttf",min_font_size=15,max_font_size=50, width=400, stopwords=st)
wc.generate(cloud_text)
wc.to_file("pic.png")

Python做中文分词相关推荐

  1. 使用Python做中文分词和绘制词云

    使用Python做中文分词和绘制词云 李小璐出轨云词图 作为一门编程语言,Python的编写简单,支持库强大,应用场景多,越来越多的人开始将它作为自己的编程入门语言. Python一个比较重要的场景是 ...

  2. 用Python做中文分词和绘制词云图

    用Python做中文分词和绘制词云图 Python窗体布局 def __init__(self):self.root=Tk()self.root.wm_title('绘制词云')self.root.r ...

  3. python用中文怎么说-如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  4. python 英语分词_如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  5. 词云python灿烈_如何用Python做中文词云?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  6. Python实现中文分词--正向最大匹配和逆向最大匹配

    编译原理实验二:Python实现中文分词–正向最大匹配和逆向最大匹配 最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数 ...

  7. Python pytagcloud 中文分词 生成标签云 系列(一)

    转载地址:https://zhuanlan.zhihu.com/p/20432734 工具 Python 2.7 (前几天试了试 Scrapy 所以用的 py2 .血泪的教训告诉我们能用 py3 千万 ...

  8. NLP快速入门:手把手教你用HanLP做中文分词

    导读:随着自然语言处理(Natural Language Processing, NLP)技术日趋成熟,实现中文分词的工具也越来越多.中文分词技术作为中文自然语言处理的第一项核心技术,是众多上层任务的 ...

  9. 手把手教你用Jieba做中文分词

    导读:近年来,随着NLP技术日益成熟,开源实现的分词工具越来越多,如Ansj.HanLP.盘古分词等.本文我们选取了Jieba进行介绍. 作者:杜振东 涂铭 来源:大数据DT(ID:hzdashuju ...

最新文章

  1. AWS — AWS ECS
  2. 一个19岁美国少年眼中的各种社交应用
  3. ef ddl生成不了脚本_如何使用Hibernate从Play生成DDL脚本! 框架项目
  4. zabbix2.2入门教程之编译安装(一)
  5. [转载]保护 ASP.NET 应用程序的安全
  6. 基于JAVA+Servlet+JSP+MYSQL的教师教学评价系统
  7. Jenkins学习总结(1)——Jenkins详细安装与构建部署使用教程
  8. python通讯录的录入与测试_python实现手机通讯录搜索功能
  9. 万科集团:掌握采购主动权,实现采购流程精细化管理
  10. 超级计算机运存多少,6GB内存到底能开多少个APP?实测告诉你最终答案
  11. 《代码整洁之道》--读书笔记
  12. 计算机网络中atm意思,atm是什么(atm什么意思)
  13. 计算机 人脑 发热 ppt,人脑即电脑,疯狂的大脑进化史,大脑科学的革命
  14. 上下定高 中间自适应_css经典布局——头尾固定高度中间高度自适应布局
  15. 【EasyUI篇】一整套EasyUI示例集锦
  16. 2022年危险化学品经营单位主要负责人最新解析及危险化学品经营单位主要负责人考试资料
  17. 初中计算机案例交流,初中语文与信息技术整合教学案例——《爱莲说》
  18. micropython ota_物联网产品的首选方案——5款追求极简设计的ESP32-PICO-D4开发板
  19. 手机上的算法优化 —— cache miss
  20. Python 获取线程返回值获取

热门文章

  1. 水滴石穿oracle之安装
  2. M1 安装aircrack-ng
  3. Windows系统任何软件都无法保存,无法另存为,无法选择文件的问题
  4. Active Directory安全25个最佳实践
  5. 二次指数平滑法 php,二次指数平滑法摘抄_二次指数平滑法算例
  6. 2013年工作中遇到的20个问题(Bug):161-180
  7. 互联网的时代,每个公司都有对应的网站,网站的作用都有哪些?
  8. php中的lt;?= ?gt;替换lt;?php echo ?gt;
  9. 中国税务机关确保减税降费政策落地生根
  10. 程序员是不是真的经常在生活中被绿呢?