wordcloud库和jieba库的使用

文章目录

  • wordcloud库的简单示范
  • 使用wordcloud库报错记录
  • anaconda安装第三方jieba库
  • jieba库的简单示范
  • [任务 1:三国演义中的常见词汇分布在"三国"这两个隶书字上,出现频率高的词字体大](#任务 1:三国演义中的常见词汇分布在“三国"这两个隶书字上,出现频率高的词字体大)
  • [任务 2:三国演义中出现频率前十的人名。必须是以下这十个名字,名字组成心形](#任务 2:三国演义中出现频率前十的人名。必须是以下这十个名字,名字组成心形)

wordcloud库的简单示范

python 复制代码
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from PIL import Image
import numpy as np

txt = "Python Java C++ JavaScript PHP Ruby Swift Kotlin Go Rust"     # 示例文本

# 创建词云对象,配置参数
c = WordCloud(
    width=400,
    height=400,
    font_path=None,
    repeat=True, # 表示单词是否可以重复出现
    mask=np.array(Image.open("love.png")), # 给词云生成轮廓用的参数,不需要做成轮廓的背景应为白色
    background_color="white", # 背景颜色
    max_words=150 # 词云的最大单词数
)
c.generate(txt)  # 指定词云的文本文件
c.to_file("词云图.jpg")    # 将生成的词云文件输入到一个文件中

使用wordcloud库报错记录

在使用wordcloud库的时候,运行报错:ValueError: Only supported for TrueType fonts

解决方案:去升级pillow库!!!

anaconda安装第三方jieba库

  1. 打开Anaconda Prompt,并进入目标环境。输入 activate 环境名
  2. 输入 pip install jieba
  3. 如果因为网络原因而下载失败,可使用清华大学镜像(99.9%解决下载失败问题):
    pip install 名称 -i https://pypi.tuna.tsinghua.edu.cn/simple

jieba库的简单示范

python 复制代码
import jieba

s = "中国是一个伟大的国家"

s1 = jieba.lcut(s) # 精确模式
print(s1)

s2 = jieba.lcut(s, cut_all=True) # 全模式
print(s2)

s3 = jieba.lcut_for_search(s) # 搜索引擎模式
print(s3)

# jieba.add_word(str)   向分词词典添加新词 str

任务 1:三国演义中的常见词汇分布在"三国"这两个隶书字上,出现频率高的词字体大

python 复制代码
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from PIL import Image
import numpy as np
from jieba import *

def getText(filename):
    text = open("{}".format(filename), encoding='utf-8').read()
    sign = '''!~·@¥......*""''\n(){}【】;:"'「,」。-、?\u3000\ufeff'''
    for ch in sign: # 特殊符号替换成空格
        text = text.replace(ch, ' ')
    return text

def wordCount(text, N):
    words = lcut(text) # 精确分词
    counts = {} # 字典类型

    for word in words:
        if len(word) < 2:
            continue
        if word not in counts:
            counts[word] = 0
        else:
            counts[word] += 1

    temp = sorted(counts.items(), key=lambda d: d[1], reverse=True) # 按计数值逆序排序
    result = dict(temp[1:N+1])

    return result

def drawWordCloud(data, N):
    # 创建词云对象,配置参数
    c = WordCloud(
        width=400,
        height=400,
        font_path="C:\Windows\Fonts\STXINGKA.TTF", # 设置字体
        repeat=False,  # 表示单词是否可以重复出现
        mask=np.array(Image.open("三国.png")),  # 给词云生成轮廓用的参数,不需要做成轮廓的背景应为白色
        background_color="white",  # 背景颜色
        max_words=N  # 词云的最大单词数
    )
    result_str = ' '.join(data.keys())
    c.generate(result_str)  # 指定词云的文本文件
    c.to_file("自制结果1.jpg")  # 将生成的词云文件输入到一个文件中

if __name__ == '__main__':
    N = 200
    text = getText('三国演义utf8.txt')
    result = wordCount(text, N)
    drawWordCloud(result, N)

运行结果:

任务 2:三国演义中出现频率前十的人名。必须是以下这十个名字,名字组成心形

十个名字:刘备、赵云、关羽、周瑜、曹操、孔明、孙权、司马懿、张飞、吕布

python 复制代码
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from PIL import Image
import numpy as np
from jieba import *

def getText(filename):
    text = open("{}".format(filename), encoding='utf-8').read()
    sign = '''!~·@¥......*""''\n(){}【】;:"'「,」。-、?\u3000\ufeff'''
    for ch in sign: # 特殊符号替换成空格
        text = text.replace(ch, ' ')
    return text

def wordCount(text, N):
    words = lcut(text) # 精确分词
    counts = {} # 字典类型
    name = ["刘备", "赵云", "关羽", "周瑜", "曹操", "孔明", "孙权", "司马懿", "张飞", "吕布"]

    for word in words:
        if word in name:
            if word not in counts:
                counts[word] = 0
            else:
                counts[word] += 1
        else:
            continue

    temp = sorted(counts.items(), key=lambda d: d[1], reverse=True) # 按计数值逆序排序
    result = dict(temp[:N])

    return result

def drawWordCloud(data, N):
    # 创建词云对象,配置参数
    c = WordCloud(
        width=400,
        height=400,
        font_path="C:\Windows\Fonts\STXINGKA.TTF", # 设置字体
        repeat=False,  # 表示单词是否可以重复出现
        mask=np.array(Image.open("love.png")),  # 给词云生成轮廓用的参数,不需要做成轮廓的背景应为白色
        background_color="white",  # 背景颜色
        max_words=N  # 词云的最大单词数
    )
    result_str = ' '.join(data.keys())
    c.generate(result_str)  # 指定词云的文本文件
    c.to_file("自制结果2.jpg")  # 将生成的词云文件输入到一个文件中

if __name__ == '__main__':
    text = getText('三国演义utf8.txt')
    result = wordCount(text, 10)
    drawWordCloud(result, 10)

运行结果:

相关推荐
郭庆汝28 分钟前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变4 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络4 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find5 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取6 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector8 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习8 小时前
Python入门Day2
开发语言·python
Vertira8 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉8 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗8 小时前
黑马python(二十四)
开发语言·python