百度松果菁英班——机器学习实践四:文本词频分析

飞桨AI Studio星河社区-人工智能学习与实训社区

🥪jieba分词+词频统计

python 复制代码
import jieba # jieba中文分词库
​
with open('test.txt', 'r', encoding='UTF-8') as novelFile:
    novel = novelFile.read()
# print(novel)
stopwords = [line.strip() for line in open('stop.txt', 'r', encoding='UTF-8').readlines()]
novelList = list(jieba.lcut(novel))
novelDict = {}
​
# 统计出词频字典
for word in novelList:
    if word not in stopwords:
            # 不统计字数为一的词
            if len(word) == 1:
                continue
            else:
                novelDict[word] = novelDict.get(word, 0) + 1
​
# 对词频进行排序
novelListSorted = list(novelDict.items())
novelListSorted.sort(key=lambda e: e[1], reverse=True)
​
# 打印前10词频
topWordNum = 0
for topWordTup in novelListSorted[:10]:
    print(topWordTup)
​
from matplotlib import pyplot as plt
x = [c for c,v in novelListSorted]
y = [v for c,v in novelListSorted]
plt.plot(x[:10],y[:10],color='r')
plt.show()
  • 导入必要的库: 代码首先导入了需要使用的库,包括了中文分词库jieba 和用于绘图的matplotlib

  • 读取文本文件: 使用 open() 函数打开名为 test.txt 的文本文件,并读取其中的内容到变量 novel 中。

  • 加载停用词列表: 代码读取了一个停用词文件 stop.txt,并将其中的停用词加载到列表 stopwords 中。

    • strip() 函数: strip() 函数用于去除字符串首尾的空白字符或指定的字符。在这段代码中,strip() 函数被用于去除停用词文件中每行字符串两端的空白字符。
  • 中文分词和词频统计: 使用 jieba 库对小说文本进行分词,得到分词列表 novelList。然后遍历分词列表,去除停用词,统计词频并保存在词频字典 novelDict 中。

    • lcut() 函数: lcut() 函数是 jieba 库中最基本的分词函数,用于将文本进行中文分词。它的输入是一个字符串,输出是一个分词后的列表,列表中的元素是文本中的各个词语。在这段代码中,lcut() 函数被用于对小说文本进行分词,将分词结果保存在 novelList 列表中。

    • novelDict[word]:从字典 novelDict 中获取键为 word 的值。

    • .get(word, 0):字典的 get() 方法,用于获取指定键的值。如果字典中存在键 word,则返回对应的值;如果不存在,返回默认值 0

    • + 1:表示将获取到的值加 1,即增加单词在文本中的出现次数。

  • 词频排序: 将词频字典 novelDict 转换为列表 novelListSorted,并按照词频从高到低进行排序。

  • 打印前10词频: 遍历排好序的词频列表,打印出前10个词频最高的词及其频次。

  • 词频可视化: 使用 matplotlib 库绘制词频最高的前10个词的词频图表。横坐标是词汇,纵坐标是词频。

🥪词云绘制

python 复制代码
from wordcloud import WordCloud,ImageColorGenerator
import jieba
import matplotlib.pyplot as plt 
from imageio import imread
​
​
#读入背景图片
bg_pic = imread('图1.png')
#生成词云图片
wordcloud = WordCloud(mask=bg_pic,background_color='white',\
    scale=1.5,font_path=r'msyh.ttc').generate(' '.join(novelDict.keys()))
plt.imshow(wordcloud) 
plt.axis('off') 
plt.show()
#保存图片
wordcloud.to_file('父亲.jpg')
  • 导入必要的库: 代码中导入了需要使用的库,包括 WordCloudImageColorGeneratorjiebamatplotlib.pyplotimageio.imread

  • 读入背景图片: 使用 imread() 函数读取名为 "图1.png" 的背景图片,并将其存储在变量 bg_pic 中。

  • 生成词云图片: 使用 WordCloud 类来生成词云图像。在生成词云对象时,通过参数指定了使用 bg_pic 作为词云的遮罩(mask)图像,设置背景色为白色,放大比例为 1.5,使用字体文件 "msyh.ttc"。并使用 generate() 方法传入分词后的文本作为参数,生成词云图像。

  • 显示词云图: 使用 matplotlib.pyplot 库中的 imshow() 函数将生成的词云图像显示出来。

  • 隐藏坐标轴: 使用 axis('off') 函数隐藏坐标轴。

  • 展示图像: 使用 show() 函数展示词云图。

  • 保存图片: 使用 to_file() 函数将生成的词云图保存为名为 "父亲.jpg" 的图片文件。

⭐点赞收藏不迷路~

相关推荐
AOwhisky6 小时前
Redis 学习笔记(第三期):持久化与主从复制
运维·数据库·redis·笔记·学习·云计算
问心无愧05136 小时前
ctf show web入门160 161
前端·笔记
xxie1237946 小时前
return与print
开发语言·python
秋96 小时前
从 Python 后端工程师转型 AI Engineer(AI 工程化)的完整补课清单(2026实战版)
开发语言·人工智能·python
啦啦啦_99996 小时前
5. 迁移学习
人工智能·机器学习·迁移学习
慕木沐7 小时前
Google ADK Java 1.0版本 核心机制与实战 Demo
java·开发语言·python
Tbisnic7 小时前
AI大模型学习第十一天:技术选型、安全防护与金融实战
python·学习·ai·大模型·提示词工程
AI工具挖掘机7 小时前
Codex 桌面版上手:从安装到自己开发首个小游戏,0 基础快速入门,手把手教学
经验分享·ai·ai编程
hboot8 小时前
AI工程师第一课 - Python
前端·后端·python
许彰午8 小时前
30_Java Stream流操作全解
java·windows·python