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

飞桨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" 的图片文件。

⭐点赞收藏不迷路~

相关推荐
NotEvenme几秒前
考研选学硕还是专硕?综合考虑哪个更难?
考研·算法·机器学习
老花眼猫2 分钟前
简明万年历编制(C语言)
c语言·经验分享·青少年编程
极度的坦诚就是无坚不摧3 分钟前
Python入门 2024/7/2
python
qq_4588421525 分钟前
基于SaaS平台的iHRM管理系统测试学习
python·学习·postman
apocelipes32 分钟前
随机数漫谈
linux·数据结构·python·算法·golang·linux编程
hycccccch43 分钟前
Java&MySQL 学习(基础)
java·开发语言·笔记·学习·mysql
人工智能培训咨询叶梓1 小时前
Lumière:开创性的视频生成模型及其应用
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·多模态
交换喜悲1 小时前
深度学习之半监督学习:一文梳理目标检测中的半监督学习策略
论文阅读·人工智能·python·学习·目标检测·计算机视觉·目标跟踪
UPToZ1 小时前
【折腾笔记】兰空图床使用Redis做缓存
redis·笔记·缓存
Learning改变世界1 小时前
Shell代码解读
python·shell