用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日

相关文章

  • 使用 tinter 在 python 上将网格打包到框架中

    【问题标题】:packing grid into frame on python with tinter使用 tinter 在 python 上将网格打包到框架中 【发布时间】:2023-04-02 16:25:01 【问题描述】: 我有这个循环: for y in range(0,matrixsize): button = Button(win, text…

    Python开发 2023年4月8日
    00
  • Python 格式化输出_String Formatting_控制小数点位数的实例详解

    Python格式化输出_StringFormatting_控制小数点位数的实例详解 在Python中,格式化输出是一种常用的技巧,可以用于将变量或表达式的值以特定的格式输出到控制台或文件中。本文将详细讲解Python格式化输出_StringFormatting_控制小数点位数的实例,包括使用字符串格式化符号、使用format方法、控制小数点位数等内容,并提供…

    python 2023年5月15日
    00
  • Python实现遗传算法(二进制编码)求函数最优值方式

    下面是详细讲解“Python实现遗传算法(二进制编码)求函数最优值方式”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 遗传算法是一种基于自然选择和遗传机制的优化算法,其主要思想是通过模拟生物进化过程,寻找最优解。在二进制编码的遗传算法中,每个个体用一个二进制串表示,通过不断交叉、变异和选择操作,寻找最优解。 二进制编码的遗传算法的实现过程…

    python 2023年5月14日
    00
  • Python3.7下安装pyqt5的方法步骤(图文)

    以下是Python3.7下安装pyqt5的方法步骤的完整攻略。 准备工作 在安装PyQt5之前,需要确保以下内容已安装: Python 3.7或更高版本 pip工具 另外,根据操作系统的不同,还需要确保相应的开发工具已安装。 Windows Visual Studio Community Visual Studio Build Tools Qt,在安装Qt之…

    python 2023年5月18日
    00
  • Python自动化实现抖音自动刷视频

    下面我将详细讲解“Python自动化实现抖音自动刷视频”的完整攻略。 1. 安装必要的工具和库 首先需要在计算机中安装Python编程语言和Selenium库。Selenium库是一个自动化测试工具,可以用Python语言写自动化脚本,模拟用户对网页进行操作。可以通过以下命令在命令行中安装: pip install selenium 2. 安装浏览器驱动 使…

    python 2023年5月19日
    00
  • Python generator生成器和yield表达式详解

    Pythongenerator生成器和yield表达式详解 在Python中,生成器是一种特殊的迭代器,它可以在迭代过程中动态生成数据,而不一次性生成所有数据。生成器通过yield达式来实现,yield表达式可以将函数的执行状态保存下来,并在下一次调用时从上一次离开的地继续执行。本文将详细讲解Python中的生成器和yield表达式的用法和注意事项,提供两个…

    python 2023年5月14日
    00
  • python 文件操作api(文件操作函数)

    下面是关于Python文件操作API(文件操作函数)的完整攻略: 文件操作函数概览 下面是Python中常用的文件操作函数: open():打开文件,创建一个文件对象 close():关闭文件 read():从文件读取数据 write():将数据写入文件 seek():移动文件指针 tell():返回文件指针的当前位置 flush():将缓冲区的数据写入文件…

    python 2023年6月2日
    00
  • python随机获取列表中某一元素的方法

    当我们希望从一个列表中随机获取某个元素时,可以使用Python的random库中的choice()函数。该函数能够从一个序列中返回一个随机元素。下面是具体的实现步骤及示例说明。 步骤一:导入random库 import random 步骤二:定义列表及其元素 my_list = [‘apple’, ‘banana’, ‘orange’, ‘kiwi’, ‘p…

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