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

yizhihongxing

下面是用 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日

相关文章

  • Python OpenCV识别行人入口进出人数统计

    Python OpenCV识别行人入口进出人数统计是一个相对复杂的项目,主要包括以下几个步骤: 1.采集视频数据 首先需要采集视频数据,以提供识别和统计的基础。可以使用电子商务平台上的摄像头,也可以在现实中安装专用监控设备。此处可以使用OpenCV自带的视频捕获功能来读取本地视频文件或者IP摄像头的视频流。 2.使用Haar特征级联检测器进行对象检测 在视频…

    python 2023年6月6日
    00
  • 详解python的几种标准输出重定向方式

    现在我来详细讲解“详解Python的几种标准输出重定向方式”的完整攻略。 什么是标准输出 在讲解如何重定向标准输出之前,我们首先需要了解下什么是标准输出。在 Python 中,标准输出一般是指 print() 函数默认输出的内容。我们可以通过各种方式来指定输出到不同的地方,比如控制台、文件或者内存等。 一、使用文件句柄重定向 我们可以使用文件句柄将输出重定向…

    python 2023年6月2日
    00
  • Python 数据的累加与统计的示例代码

    Python是一门强大的编程语言,可以用来进行数据处理和分析。在数据分析中,经常需要进行数据的累加和统计。下面是Python数据的累加和统计的示例代码攻略。 累加示例 下面是一个简单的示例,演示如何逐步对数据进行累加。 total = 0 # 初始值为0 for i in range(1, 11): # 对列表[1, 2, …, 10]中的每个值进行累加…

    python 2023年5月31日
    00
  • 以911新闻为例演示Python实现数据可视化的教程

    数据可视化是一种将数据转换为图形或图表的技术,可以帮助我们更好地理解和分析数据。本文将以911新闻为例,演示如何使用Python实现数据可视化。 数据获取 首先,我们需要获取911新闻数据。我们可以从Kaggle网站下载911新闻数据集。下载完成后,我们可以使用pandas库读取数据集: import pandas as pd df = pd.read_cs…

    python 2023年5月15日
    00
  • 为什么 Python 中遇到的段违规错误比 Fortran 少?

    【问题标题】:Why fewer segment violation error met in Python than Fortran?为什么 Python 中遇到的段违规错误比 Fortran 少? 【发布时间】:2023-04-02 14:05:01 【问题描述】: 根据我有限的经验,在 Python 中,遇到段冲突错误的情况比 Fortran 少得多(…

    Python开发 2023年4月8日
    00
  • Python基础学习函数+模块+类

    Python基础学习——函数、模块和类 在Python中,函数、模块和类都是非常重要的基础知识。 函数 函数是一块可重用的代码,它接受输入并返回输出。函数的优点是可以提高代码的可读性和重复利用性。 函数的定义和调用 在Python中,定义函数的语法为: def function_name(parameter1, parameter2, …): # fun…

    python 2023年6月5日
    00
  • Python强化练习之Tensorflow2 opp算法实现月球登陆器

    Python强化练习之Tensorflow2opp算法实现月球登陆器 本文将介绍如何使用Tensorflow 2.0实现opp算法来控制月球登陆器的着陆。我们将介绍opp算法的原理实现步骤,并提供两个示例,分别演示如何使用Python实现简单和复杂的月球着陆控制。 opp法原理 opp算法是一种基于模型预测控制(MPC)的控制法。该算法通过预测未来状态来计算…

    python 2023年5月14日
    00
  • 【验证码逆向专栏】数美验证码全家桶逆向分析以及 AST 获取动态参数

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除! 目标 目标:数美全…

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