0
点赞
收藏
分享

微信扫一扫

豆瓣top250-词云案例

minute_5 2022-02-19 阅读 61
python

运行效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目结构

在这里插入图片描述

import jieba
from matplotlib import pyplot as plt
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import sqlite3


def get_text():
    """
    获取简介文本
    :return:获取的字符串 
    """
    con = sqlite3.connect("E:\PYcharm\learn_flask\movie.db")
    cur = con.cursor()

    string = ""
    sql = "select info from movie_top"
    data = cur.execute(sql)

    for item in data:  # 把查询到的数据转换成字符串,防止游标关闭数据没有加载完
        string = string + item[0]

    con.commit()
    cur.close()
    con.close()
    return string


def cut_text(text):
    """
    通过jieba.cut()把文章拆分为词
    :param text:  简介文本
    :return: 词条字符串
    """
    cut = jieba.cut(text)  # 使用jieba模板,把文本拆分为词
    string = ' '.join(cut)

    return string


def draw(string):

    img = Image.open(r'./tree.jpg')  # 打开遮挡图片
    img_arr = np.array(img)  # 利用numpy,返回一个数组
    #  创建一个词云对象
    wc = WordCloud(
        background_color='white',
        mask=img_arr,
        font_path='msyh.ttc'  # 字体
    )
    wc.generate_from_text(string)  # 使用词条生成词云

    fig = plt.figure("豆瓣Top250")   # 创建一个画布
    plt.imshow(wc) 
    plt.axis('off')

    plt.show()

if __name__ == "__main__":

    text = get_text()  # 从数据库中读取文本
    string = cut_text(text)  # 把文本拆分为词条
    draw(string)  # 构建词云


注意选择遮挡图片时背景选用纯白色

举报

相关推荐

0 条评论