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

相关文章

  • python使用magic模块进行文件类型识别方法

    当我们需要获取文件的类型时,我们通常会根据文件扩展名进行分类,但是有一些文件可能是没有扩展名的,或者扩展名被误改,这时候就需要使用一些工具进行文件类型分类。其中一个工具就是 Python 的 magic 模块。 以下是使用 magic 模块进行文件类型识别的步骤: 安装 magic 模块 magic 模块不是 Python 的核心模块,需要使用 pip 安装…

    python 2023年5月20日
    00
  • Python字符串、元组、列表、字典互相转换的方法

    下面就给您讲解一下Python字符串、元组、列表、字典互相转换的方法: 1. 字符串转列表、元组、字典 1.1 转列表 字符串转列表可以通过split()方法实现,该方法的作用是将字符串以指定的分隔符(默认为空格)分割成一个列表。示例如下: str1 = ‘a,b,c,d,e’ list1 = str1.split(‘,’) print(list1) 输出结…

    python 2023年5月13日
    00
  • 详解Python中映射类型(字典)操作符的概念和使用

    详解Python中映射类型(字典)操作符的概念和使用 在Python中,字典(dictionary)是一种映射类型(mapping type),它是一组以 key-value 形式存储的数据结构。在字典中,每一个 key 都唯一地对应一个 value。 字典的基本操作 创建字典 可以使用大括号 {} 或 dict 函数来创建字典。例如: # 使用大括号创建空…

    python 2023年5月13日
    00
  • python生成密码字典的方法

    生成密码字典是利用一些脚本或者工具对一些明文密码进行特殊组合生成大量可能的密码进行爆破攻击,以此提高攻击者的密码破解成功率。下面就介绍一下在Python中生成密码字典的两个主要方法: 使用itertools生成密码字典 itertools模块是Python标准库中提供的一个工具模块,它功能非常强大,可以帮助我们实现对迭代器进行各种不同的操作,从而简化代码的编…

    python 2023年5月13日
    00
  • Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]

    Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]表示各种数据切片操作,它们是numpy多维数组中常见的切片操作,下面我们分别进行详细讲解。 X[:,0]和X[:,1] X[:,0]表示取二维数组X中第一列的所有元素,而X[:,1]则表示取二维数组X中第二列的所有元素。X[:,0]和X[:,…

    python 2023年6月5日
    00
  • 利用Python改正excel表格数据

    利用Python修改Excel表格数据是一项非常常见的任务。下面就是一份基于Python的Excel数据修改教程。 步骤一:安装必要的Python包 我们首先需要安装必要的Python包,这些包在修改和处理Excel表格数据时需要用到。这里我们需要安装openpyxl和pandas两个包,可以使用pip来进行安装。在命令行中输入以下命令: pip insta…

    python 2023年5月13日
    00
  • python使用 f 格式化字符串的用法

    当我们想要将变量嵌入到字符串中时,我们可以使用字符串格式化,其中一种方式是使用f格式化字符串。以下是Python的f格式化字符串的用法的完整攻略: 1.基本用法 在需要进行格式化的字符串前面加上“f”字符(小写或大写都可以)即可。然后在需要插入变量值的地方使用花括号{},并在其中写入变量的名称,最后即可直接在花括号中写入表达式。 示例如下所示: name =…

    python 2023年6月5日
    00
  • python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法

    下面是详细讲解“python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法”的完整攻略。 一、Pillow模块 Pillow是Python Imaging Library(PIL)的分支,提供了更加友好的API和更好的兼容性。 在使用前,需要先安装Pillow模块: pip3 install Pillow 1. 读…

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