用python结合jieba和wordcloud实现词云效果

下面是用 Python 结合 jieba 和 wordcloud 实现词云的完整攻略:

1. 安装所需库

首先需要确保已经安装了需要用到的 jiebawordcloud 库。如果没有安装,可以在控制台使用以下命令安装:

pip install jieba
pip install wordcloud

2. 准备文本数据

准备需要生成词云的文本数据,可以是文件形式或者直接在 Python 程序中定义字符串。例如,下面的示例中我们直接定义字符串:

text = "动物园是一个好地方,里面有很多有趣的动物,小朋友们都很喜欢来这里玩。"

3. 利用 jieba 进行分词

为了将文本分成单个的词语,需要使用 jieba 来进行中文分词。在分词之前还需要先创建一个 jieba 分词器对象:

import jieba

jieba.setLogLevel(20)  # 设置日志等级,避免无用日志输出

seg_list = jieba.cut(text)  # 对 text 进行分词,返回的是一个可迭代的 generator

setLogLevel() 方法是设置 jieba 的日志等级,避免无用日志输出,如果不设置可能会在控制台上产生大量无用输出。

需要注意的是,jieba.cut() 返回的是一个可迭代的 generator,可以通过 for 循环或者列表生成式将其转换为列表:

word_list = list(seg_list)  # 将 jieba.cut() 返回的结果转换为列表

4. 提取关键词

如果想要生成词云,需要进一步提取文本中的关键词。jieba 还提供了一个方法用于提取关键词,为了提高准确度,可以在提取关键词时指定停用词文件,这些停用词不会作为关键词进行计算。例如下面的示例代码:

jieba.analyse.set_stop_words("stop_words.txt")  # 加载停用词文件

# 提取关键词,返回的是一个列表,每个元素为一个 tuple,其中第一个元素为关键词,第二个元素为关键词的权重
keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=True)

其中,jieba.analyse.set_stop_words() 方法用于加载停用词文件,topK 参数表示提取的关键词数量,默认为 20,可以根据需要进行调整。

5. 生成词云

接下来利用 wordcloud 生成词云,首先需要导入 wordcloud:

from wordcloud import WordCloud

然后,创建一个 WordCloud 对象,设置相关参数,如下所示:

wc = WordCloud(font_path="STHeiti Medium.ttc",   # 指定字体文件
               width=1000, height=600,           # 指定词云图的大小
               background_color="white",         # 指定背景色
               max_words=50,                     # 指定最多显示的单词数量
               min_font_size=10,                 # 指定最小字号
               contour_width=1, contour_color='steelblue'  # 指定轮廓线宽度和颜色
               )

其中,font_path 指定了用于显示中文的字体文件,widthheight 分别指定了词云图的宽度和高度,background_color 指定了词云图的背景色,max_words 指定了最多显示的单词数量,min_font_size 指定了最小的字号,contour_widthcontour_color 分别指定了词云轮廓线的宽度和颜色。

最后,调用 WordCloud 对象的 generate() 方法,生成词云:

wc.generate_from_frequencies(dict(keywords))
wc.to_file("output.png")  # 将词云保存到图片文件中

其中,wc.generate_from_frequencies() 方法接受一个字典作为参数,字典的 key 为关键词,value 为该关键词的权重。由于 jieba.analyse.extract_tags() 方法返回的是一个列表,每个元素是一个关键词 tuple,因此需要使用 dict() 方法将其转换成字典。

最后使用 to_file() 方法将生成的词云保存到图片文件中。

示例1:生成单个文本文件的词云

下面是一个完整的示例,根据单个文本文件生成词云。

import jieba
import jieba.analyse
from wordcloud import WordCloud

# 准备文本数据
with open("data.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
jieba.setLogLevel(20)
seg_list = jieba.cut(text)
word_list = list(seg_list)

# 提取关键词
jieba.analyse.set_stop_words("stop_words.txt")
keywords = jieba.analyse.extract_tags(text, topK=50, withWeight=True)

# 创建词云
font_path = "STHeiti Medium.ttc"
background_color = "white"
wc = WordCloud(font_path=font_path,
               width=1000, height=600,
               background_color=background_color,
               max_words=50,
               min_font_size=10,
               contour_width=1, contour_color='steelblue')

# 生成词云
wc.generate_from_frequencies(dict(keywords))
wc.to_file("output.png")

示例2:生成多个文本文件的词云

如果要生成多个文本文件的词云,可以将上面的代码放在一个函数中,然后循环读取多个文件,将文件内容传递给函数生成词云。例如下面的示例代码:

import os

# 生成词云的函数
def generate_wordcloud(text):
    # 分词
    jieba.setLogLevel(20)
    seg_list = jieba.cut(text)
    word_list = list(seg_list)

    # 提取关键词
    jieba.analyse.set_stop_words("stop_words.txt")
    keywords = jieba.analyse.extract_tags(text, topK=50, withWeight=True)

    # 创建词云
    font_path = "STHeiti Medium.ttc"
    background_color = "white"
    wc = WordCloud(font_path=font_path,
                   width=1000, height=600,
                   background_color=background_color,
                   max_words=50,
                   min_font_size=10,
                   contour_width=1, contour_color='steelblue')

    # 生成词云
    wc.generate_from_frequencies(dict(keywords))
    wc.to_file("output.png")

# 循环读取多个文本文件
for filename in os.listdir("data"):
    if filename.endswith(".txt"):
        filepath = os.path.join("data", filename)
        with open(filepath, "r", encoding="utf-8") as f:
            text = f.read()
        generate_wordcloud(text)

上面的示例中,os.listdir("data") 返回 data 目录下的所有文件名,然后循环判断文件名是否以 .txt 结尾,如果是,则读取文件内容并将其传递给 generate_wordcloud() 函数生成词云。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用python结合jieba和wordcloud实现词云效果 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Python3实现取图片中特定的像素替换指定的颜色示例

    下面我将详细讲解“Python3实现取图片中特定的像素替换指定的颜色示例”的完整攻略。 步骤一:导入库 我们需要导入PIL库,使用PIL库可以轻松读取、处理图片。 from PIL import Image 步骤二:读取图片 读取图片需要使用Image.open()方法,该方法会返回一个图片对象。我们可以使用.show()方法显示这个图片。 img = Im…

    python 2023年5月18日
    00
  • Python argparse中的action=store_true用法小结

    Python argparse中的action=store_true用法小结攻略如下: 1. 理解action=store_true 在Python中的argparse模块中,action是参数值如何被处理的方式,其中,action=store_true表示在命令行中指定该参数时,该参数对应的值为True,不指定则为False。 在argparse中,使用p…

    python 2023年6月3日
    00
  • python生成requirements.txt的两种方法

    下面是对于“python生成requirements.txt的两种方法”的详细讲解。 生成requirements.txt的两种方法 在Python项目中,我们通常需要记录下项目中使用到的依赖包及其版本号,并且这些依赖包的版本可能会随时更新,这时我们就需要使用 requirements.txt 文件来记录依赖包的详细信息。下面介绍两种方法来生成 requir…

    python 2023年5月13日
    00
  • 不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决

    针对“不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决”这一问题,我们可以采用以下方案: 问题描述 在 Python matplotlib 库使用过程中,若出现不同版本的 matplotlib 库在使用 pyplot.draw() 函数时画布未被成功绘制或崩溃等异常现象,需要对此进行解决。 解决方案 针对不同版本…

    python 2023年5月13日
    00
  • Python 类属性与实例属性,类对象与实例对象用法分析

    Python 类属性与实例属性,类对象与实例对象用法分析 在Python中,类和实例都有属性这个概念,属性可以是类属性或实例属性。类属性属于类对象,实例属性属于实例对象。在使用类和实例时,对属性的理解和应用是很重要的。本文将详细讲解Python类属性与实例属性、类对象与实例对象的用法及应用。 定义类 我们首先要学习的是如何定义类。在Python中,使用cla…

    python 2023年6月7日
    00
  • Python命令行解析工具argparse模块

    下面是针对Python命令行解析工具argparse模块的完整攻略。 什么是argparse模块 argparse是Python标准库中用于命令行解析的模块,它可以帮助我们定义和解析命令行参数,并提供了丰富的功能和选项。 argparse模块的基本用法 引入argparse模块 python import argparse 创建ArgumentParser对…

    python 2023年6月3日
    00
  • python使用Pandas库提升项目的运行速度过程详解

    Python使用Pandas库提升项目的运行速度详解 Pandas是一个Python数据分析库,提供了大量用于快速、简单、灵活地处理数据的函数和方法。Pandas的数据结构和函数可以帮助你快速处理、清理、分析和操作数据。 本文将介绍如何使用Pandas库提升项目的运行速度,下面是具体步骤。 1. 加载数据 加载数据是数据分析的第一步,Pandas可以使用re…

    python 2023年6月3日
    00
  • python字典遍历数据的具体做法

    Python字典是一种非常强大的数据结构,用于存储键值对信息。在进行数据分析、机器学习、自然语言处理等各种领域时,都可以使用Python字典结构来存储、处理和分析数据。 在Python中,有几种方法可以遍历字典中的数据。下面是一些常用的方法。 1. 使用for循环遍历字典键值对 可以使用for循环遍历字典的键值对,具体实现如下: my_dict = {‘ap…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部