Python中文分词制作标签云

1. 导读

在大数据时代,我们经常在媒体或者网站上看到各种各样的信息图。词云是文本大数据可视化的重要方式,可以将大段文本中的关键语句和词汇高亮展示。对于中文文本的可视化,我们需要先将中文文本进行分词;然后再将文本中的关键词做词云展示。本文将教大家如何使用Python来做中文分词并制作词云,欢迎大家跟着教程一步步实现。

2. 中文分词

2.1 分词入门

所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。而英文词与词自带空格作为分隔符,相比于中文分词要简单。这里我们以中文分词为例来介绍。Python 为我们提供了 Jieba 库进行分词,接下来如何使用 Jieba 库进行中午呢分词。

python">import jieba

# 文本数据

text = "MomodelAI是一个支持在线数据分析和AI建模的平台。"

result = jieba.cut(text)

# 将切分好的文本用" "分开

print("分词结果: " + " ".join(result))

'''

分词结果: MomodelAI 是 一个 支持 在线 数据分析 和 AI 建模 的 平台 。

'''

2.2 特殊名词

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

text = "Mo平台是一种支持模型开发与部署的人工智能建模平台。"

# 强调特殊名词

jieba.suggest_freq(('Mo平台'), True)

result = jieba.cut(text)

print("分词结果: "+" ".join(result))

'''

分词结果: Mo平台 是 一种 支持 模型 开发 与 部署 的 人工智能 建模 平台 。

'''

2.3 文本清洗

一些特殊的符号在切分之后会单独成词,这些词会影响我们之后的分析。这里我们可以使用一个标点符号库 stopwords.txt,将切分出来的特殊符号剔除掉;对于“了”,“的”这样长度为一的词,显然对我们分析文本没有任何帮助。处理的方法为将长度为1的词全部剔除掉。

#从文件导入停用词表

stpwrdpath = "stop_words.txt"

stpwrd_dic = open(stpwrdpath, 'rb')

stpwrd_content = stpwrd_dic.read()

#将停用词表转换为list

stpwrdlst = stpwrd_content.splitlines()

stpwrd_dic.close()

segs = jieba.cut(text)

mytext_list = []

# 文本清洗

for seg in segs:

if seg not in stpwrdlst and seg!=" " and len(seg)!=1:

mytext_list.append(seg.replace(" "," "))

cloud_text=" ".join(mytext_list)

print("清洗后的分词结果: " + cloud_text)

'''

清洗后的分词结果: Mo平台 一种 支持 模型 开发 部署 人工智能 建模 平台

'''

3. 词云制作

3.1 简单词云制作

在制作中文文本数据的词云之前,我们首先要用上面介绍的方法将中文文本进行分词。

# 中文分词

from wordcloud import WordCloud

with open('./Mo.txt',encoding = 'utf-8', mode = 'r')as f:

myText = f.read()

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

print(myText)

得到分词好的文本数据后,我们再使用 WordCloud 库制作词云。(注:由于 WordCloud 本身不支持中文字体,我们需要将下载的 simsun.ttf,作为指定输出字体。)

# 制作词云

wordcloud = WordCloud(background_color="white", font_path="simsun.ttf", height=300, width = 400).generate(myText)

# 图片展示

import matplotlib.pyplot as plt

plt.imshow(wordcloud)

plt.axis("off")

plt.show()

# 将词云图片导出到当前文件夹

wordcloud.to_file("wordCloudMo.png")

3.2 绘制指定形状的词云

制作指定形状的词云的时候,我们需要先读入外部词云形状图片,这里我们使用 imageio 库。

# 导入词云制作库wordcloud和中文分词库jieba

import jieba

import wordcloud

# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片

import imageio

mk = imageio.imread("chinamap.png")

w = wordcloud.WordCloud(mask=mk)

# 构建并配置词云对象w,注意要加scale参数,提高清晰度

w = wordcloud.WordCloud(width=1000, height=700,background_color='white',font_path='simsun.ttf',mask=mk,scale=15)

# 对来自外部文件的文本进行中文分词,得到string

f = open('新时代中国特色社会主义.txt',encoding='utf-8')

txt = f.read()

txtlist = jieba.lcut(txt)

string = " ".join(txtlist)

# 将string变量传入w的generate()方法,给词云输入文字

wordcloud = w.generate(string)

import matplotlib.pyplot as plt

plt.imshow(wordcloud)

plt.axis("off")

plt.show()

# 将词云图片导出到当前文件夹

w.to_file('chinamapWordCloud.png')

3.3 结果展示

作者:梅昊铭,项目地址:https://momodel.cn/workspace/5e77afb7a8a7dc6753f582b9?type=app

以上是 Python中文分词制作标签云 的全部内容, 来源链接: utcz.com/a/15023.html

回到顶部