词频统计以及分析(词云制作)

词频统计以及分析(词云制作)

对文章进行词频的统计,分析文章的所属类型,分析文章是否满足要求,进行等等操作的时候,就需要进行词频的统计,还有就是制作一个词云图,直观显示文章的比重。

一、对英语文章的分析、

首先对文章进行特征处理(处理掉一些特殊符号);

# 对文章进行特征处理
def getText():   
    txt = open("time.txt", "r").read()
    txt = txt.lower()                                                              # 装换为同一的大小写
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':                    # 排除这些特殊符号字符
        txt = txt.replace(ch, " ")
    return txt

其次对文章进行分裂;

hamletTxt = getText()
words = hamletTxt.split()
text = ' '.join(words)        # 把分割之后的词按照空格形式进行连接,方便制作词云

最后计算单词的词频,做出词云图;

counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1                # 使用字典接受所有的单词的词频
items = list(counts.items())                                      # 转换为列表
items.sort(key=lambda x: x[1], reverse=True)         # 进行词频大小排序
for i in range(15):                                                    # 输出词频的前十五个
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))           # 格式换输出

二、对中文文章的分析

ps:对中文进行词频统计需要使用到第三方模块(jieba),使用第三方模块进行分裂文章中的单词;

首先导入模块

import jieba

读取文章内容

txt = open("threekingdoms.txt", "r", encoding="utf-8").read()
words = jieba.lcut(txt)                 # 注意此时生成的是一个生成器,并不是一个列表,节约内存
text = ' '.join(words)        # 把分割之后的词按照空格形式进行连接,方便制作词云

计算单词的频率

for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1

格式化输出词频

items = list(counts.items())                # 把字典转换为列表
items.sort(key=lambda x: x[1], reverse=True)               # 列表的词频进行排序
for i in range(15):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))                 # 格式化输出内容

制作词云图

导入模块

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

选择背景图片

# 尽量选择一张背景颜色为白色的图片,没有杂色
image = Image.open("F:\background.jpg")      

# 使用numpy把图片转换为矩阵数组
img_array = np.array(image)

# 制作词云图
wc = WordCloud(
    background_color='white',
    mask=img_array,
    font_path='mingliub.ttc'           # 单词中存在中文时候,需要设置中文字体的路径
)
wc.generate_from_text(text)

fig = plt.figure(figsize=(10,10))          # 制作一张图片
plt.imshow(wc)
plt.axis("off")        # 不使用坐标轴

plt.show()

这样子就可以对文章进行词频统计以及制作词云图了,剩下的就是对词云图的样式进行调整了,这个简单就不介绍了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115138.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单单元測试思想

    简单单元測试思想

    2021年12月3日
    61
  • 毕设开发日志2017-11-05[通俗易懂]

    毕设开发日志2017-11-05

    2022年3月12日
    36
  • Command Msiexec Install

    Command Msiexec Install解释包和安装产品的可执行程序是Msiexec.exe。注意,Msiexec还在返回时设置了一个与系统错误代码相对应的错误级别。命令行选项不区分大小写。下表中的命令行选项可用于WindowsInstaller3.0及更早版本。的StandardInstallerCommand-LineOptions也可以从WindowsInstaller3.0开始使用。COMMAND-LINEOPTIONS Option Parameters Meaning /I Pack..

    2025年8月7日
    2
  • 30 个重要数据结构和算法完整介绍建议保存

    30 个重要数据结构和算法完整介绍建议保存数据结构和算法(DSA)通常被认为是一个令人生畏的话题——一种常见的误解。它们是技术领域最具创新性概念的基础,对于工作/实习申请者和有经验的程序员的职业发展都至关重要。话虽如此,我决定在CSDN新星计划挑战期间将我所了解的数据结构和算法集中起来。本文旨在使DSA看起来不像人们认为的那样令人生畏。它包括15个最有用的数据结构和15个最重要的算法,可以帮助您在学习中和面试中取得好成绩并提高您的编程竞争力。后面等我还会继续对这些数据结构和算法进行进一步详细地研究讲解。

    2022年5月23日
    32
  • vue.js单页应用_vue嵌入第三方页面

    vue.js单页应用_vue嵌入第三方页面今天我们看看VUE怎么开发单页面应用,VUE提供了脚手架vue-cli,通过这个可以很轻松的创建VUE单页面应用,1.创建VUE项目  首先确保电脑上安装了NODE.JS, 在创建项目的目录下,打开CMD命令行,执行脚手架命令,安装脚手架cli. #全局安装vue-cli,一定要在全局模式下安装vue-cli,否则无法使用vue命令npminstall-gvue…

    2022年10月13日
    4
  • 抗渗等级p6是什么意思_混凝土p6是什么意思「建议收藏」

    抗渗等级p6是什么意思_混凝土p6是什么意思「建议收藏」展开全部40是混凝土的强度等62616964757a686964616fe58685e5aeb931333431356664级,P6是抗渗混凝土按抗渗压力。抗渗混凝土按抗渗压力不同分为P6、P8、P10、P12和大于P12共5个等级。抗渗混凝土通过提高混凝土的密实度,改善孔隙结构,从而减少渗透通道,提高抗渗性。混凝土按标准抗压强度(以边长为150mm的立方体为标准试件,在标准养护条件下养护28天,…

    2022年8月10日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号