中文分词
1、中文分词第三方模块 jieba
- 首先导入 jieba 模块
- 利用 jieba 模块的 lcut 方法将一串字符串进行分词
- 分词得到的结果是一个列表
import jieba
textlist1 = jieba.lcut("你是一头小猪猪")
print(textlist1)
# output:['你', '是', '一头', '小猪猪']
- 利用字符串的 .join 方法将一个列表重新拼接成一个字符串
import jieba
textlist1 = jieba.lcut("你是一头小猪猪")
textlist2 = " ".join(textlist1)
print(textlist2)
# output:你 是 一头 小猪猪
2、中文分词库 jieba 的常用方法
精确模式
- 每个词只用一遍,不存在冗杂词汇
import jieba
textlist1 = jieba.lcut("你是一头小猪猪")
print(textlist1)
# output:['你', '是', '一头', '小猪猪']
全模式
- 把每个词可能形成的词汇都提取出来,可能形成冗杂
import jieba
textlist1 = jieba.lcut("你是一头小猪猪", cut_all=True)
print(textlist1)
# output:['你', '是', '一头', '小猪', '小猪猪', '猪猪']
搜索引擎模式
- 将全模式分词的结果从短到长排列好
import jieba
textlist1 = jieba.lcut_for_search("你是一头小猪猪")
print(textlist1)
# output:['你', '是', '一头', '小猪', '猪猪', '小猪猪']
3、中文分词(不需要写 open 方法)程序举例
3.1、源代码
import wordcloud
import jieba
# 导入词云制作第三方库 wordcloud 和中文分词库第三方库 jieba
w = wordcloud.WordCloud(width=400, height=200, background_color="white", font_path="msyh.ttc")
# 构建词云对象 w、设置词云图片宽、高、字体、背景颜色等参数
txt = "其实乌鸦和人有一种共生关系,它们热爱人类,循其足迹,蹭吃蹭喝。有人类的弱点,怕孤独,呼啸成群。"\
"它们肯定有自己的社会结构,只不过人对此没有耐心罢了:天下乌鸦一般黑。"
# 创建一个文本变量、用来存储一段文本
txtlist = jieba.lcut(txt)
# 利用 jieba 将文本 txt 进行分词、并形成一个列表传递给变量 txtlist
string = " ".join(txtlist)
# 利用字符串的 .join 方法将列表重新转换成字符串
w.generate(string)
# 将分词后的文本 string 变量传入 w 的 generate() 方法
w.to_file("wordcloud4.png")
# 将生成的词云保存为 wordcloud3.png 图片文件、保存出到当前文件夹中
3.2、导出图片
4、中文分词(需要写 open 方法)程序举例
4.1、源代码
import wordcloud
import jieba
# 导入词云制作第三方库 wordcloud 和中文分词库第三方库 jieba
w = wordcloud.WordCloud(width=400, height=200, background_color="white", font_path="msyh.ttc")
# 构建词云对象 w、设置词云图片宽、高、字体、背景颜色等参数
f = open("北岛 《蓝房子》.txt", encoding="utf-8")
txt = f.read()
# 创建一个文本变量、用来存储一段文本
txtlist = jieba.lcut(txt)
# 利用 jieba 将文本 txt 进行分词、并形成一个列表传递给变量 txtlist
string = " ".join(txtlist)
# 利用字符串的 .join 方法将列表重新转换成字符串
w.generate(string)
# 将分词后的文本 string 变量传入 w 的 generate() 方法
w.to_file("wordcloud4.png")
# 将生成的词云保存为 wordcloud3.png 图片文件、保存出到当前文件夹中
4.2、导出图片
5、对导出图片文字横竖排版的介绍
- 此处涉及到另一个参数 prefer_horizontal
- 参数默认值为 0.9(是一个浮点数)
- 表示在水平方向放置不合适,那么就竖着排
- 水平放置的词数占比 90%
- 当参数取 1 的时候,全是横着排版的
- 当参数取 0 的时候,基本是竖着排版的
- 以此类推,基本竖着排版(0)——全是横着排版(1)
prefer_horizontal 参数取 1
- 源代码
import wordcloud
import jieba
# 导入词云制作第三方库 wordcloud 和中文分词库第三方库 jieba
w = wordcloud.WordCloud(width=400, height=200, background_color="white", font_path="msyh.ttc", prefer_horizontal=1)
# 构建词云对象 w、设置词云图片宽、高、字体、背景颜色等参数
f = open("北岛 《蓝房子》.txt", encoding="utf-8")
txt = f.read()
# 创建一个文本变量、用来存储一段文本
txtlist = jieba.lcut(txt)
# 利用 jieba 将文本 txt 进行分词、并形成一个列表传递给变量 txtlist
string = " ".join(txtlist)
# 利用字符串的 .join 方法将列表重新转换成字符串
w.generate(string)
# 将分词后的文本 string 变量传入 w 的 generate() 方法
w.to_file("wordcloud4.png")
# 将生成的词云保存为 wordcloud4.png 图片文件、保存出到当前文件夹中
- 导出图片
prefer_horizontal 参数取 0 - 源代码
import wordcloud
import jieba
# 导入词云制作第三方库 wordcloud 和中文分词库第三方库 jieba
w = wordcloud.WordCloud(width=400, height=200, background_color="white", font_path="msyh.ttc", prefer_horizontal=0)
# 构建词云对象 w、设置词云图片宽、高、字体、背景颜色等参数
f = open("北岛 《蓝房子》.txt", encoding="utf-8")
txt = f.read()
# 创建一个文本变量、用来存储一段文本
txtlist = jieba.lcut(txt)
# 利用 jieba 将文本 txt 进行分词、并形成一个列表传递给变量 txtlist
string = " ".join(txtlist)
# 利用字符串的 .join 方法将列表重新转换成字符串
w.generate(string)
# 将分词后的文本 string 变量传入 w 的 generate() 方法
w.to_file("wordcloud4.png")
# 将生成的词云保存为 wordcloud4.png 图片文件、保存出到当前文件夹中
- 导出图片