一、jieba库的使用
1.jieba库介绍
jieba是优秀的中文分词第三方库,使用pip安装后可以使用其来对中文文本进行分词
特点:
-
支持三种分词模式:
- 精确模式,试图将句子最精确地切开,适合文本分析,单词无冗余;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义,存在冗余;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
-
支持繁体分词
-
支持自定义词典
-
MIT 授权协议
2.jieba库方法
(1)jieba库3种分词方法(3种模式)
3种模式对应的方法如下:
- cut(s)和lcut(s) # 精确模式
- lcut(s, cut_all=True) # 全模式(存在冗余)
- cut_for_search(s)和lcut_for_search(s) # 搜索模式(存在冗余)
注:cut()和lcut()的不同:cut返回的是生成器,lcut返回的是列表。cut_for_search()和lcut_for_search()也是前者返回生成器,后者返回列表
另外:
cut
方法lcut方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型cut_for_search
方法和lcut_for_searchlcut_for_search接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细- 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
示例:
结果:
(2)向字典中添加新词或添加自定义词典
使用 add_word(word, freq=None, tag=None)
和 del_word(word)
可在程序中动态修改词典,当然也可以使用load_userdict(file_name)来导入自定义字典
最简单的用法:add_word() 直接向分词词典中添加新词
示例:
接下来是词云制作:
将“C:\Windows\Fonts”下的微软雅黑字体文件复制到“E:\ciyun\fonts\”目录中,备用。
将github仓库中的“规划纲要”文档text.md下载到“E:\ciyun\”目录中,备用。md文件为类txt文档,可以使用系统自带的记事本打开查看文档内容。
以下操作的截图,详见github仓库中的操作截图ciyun.jpg。
点击打开安装好的Anaconda命名提示符(Anaconda Prompt),执行ipython命令打开python操作环境。
把jieba和wordcloud以及plt绘图工具导入备用:
In [1]: import jieba as jb
In [2]: from wordcloud import WordCloud
In [3]: import matplotlib.pyplot as plt
四、对《规划纲要》文档预处理
读入《规划纲要》文档:
In [4]: text = open(‘E:\ciyun\text.md’, encoding=’utf-8’).read()
可以输入text后回车,查看读入的文档内容, 限于篇幅,截图中没有进行该操作,大家可自行操作。
发现文档中有大量的“\n\n”、“#”、“\u3000”等无意义的内容,
去掉“\u3000”;去掉连续换行符,去掉“#”:
In [5]: text = text.replace(‘\u3000’,’’)
In [6]: text = text.replace(‘\n\n’,’\n’)
In [7]: text = text.replace(‘#’,’’)
可以输入text后回车查看处理后的文档内容。
五、使用jieba对文档进行分词
使用jieba的cut函数对文档进行切分,使用“/”符号把分词连起来,备用:
In [8]: seg_list = jb.cut(text)
In [9]: text_cut = ‘/‘.join(seg_list)
此时,可以输入text_cut后回车,查看用“/”符号分割的文档字符。
六、使用wordcloud制作词云
设置词云图片的背景色为白色,字体为微软雅黑,图片宽度和高度,以分词为内容生成词云:
In [10]: wordcloud = WordCloud(background_color=”white”,font_path=’E:\fonts\msyh.ttf’,width=1000, height=860, margin=2).generate(text_cut)
把词云放置在绘图工作中;隐藏图片的坐标轴;显示绘图结果:
In [11]: plt.imshow(wordcloud);plt.axis(“off”);plt.show()
点击绘图结果中的保存按钮,选择保存位置,保存词云图片。也可以自行调整相关的参数,查看不同的词云效果。
退出ipython:
In [12]: exit
再次exit退出Anaconda命名提示符(Anaconda Prompt)。
以《“健康中国2030”规划纲要》文档为例,在python中使用jieba分词和wordcloud词云制作工具,制作该文档的简单版词云,最终结果如下: