文本分析-使用Python做词频统计分析

3f6a7ab0347a4af1a75e6ebadee63fc1.gif

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


8946b99f82944b32900d3a3f4bf942f4.png

前言

前面我们已经介绍了文本分析中的中文分词和去除停用词,这篇文章将详细介绍分词后如何进行词频统计分析。

词频统计的概念

        词频统计是指在文本或语音数据中,统计每个单词或符号出现的次数,以便对文本或语音数据进行分析和预处理。词频统计是自然语言处理中的一个重要任务,其目的是为后续的文本分析、情感分析、机器翻译等任务做好准备。

        在词频统计中,通常将文本或语音数据转换成单词或符号的形式,然后统计每个单词或符号出现的次数,并将其存储为一个数据集或字典。这些数据集或字典可以用来训练机器学习模型或进行文本分类、情感分析等任务。

        词频统计可以应用于许多领域,例如文本分类、情感分析、机器翻译、信息检索等。在文本分类中,词频统计可以帮助确定最重要的单词或符号,以帮助分类器进行分类。在情感分析中,词频统计可以帮助确定文本中最常见的情感,以便进行分类。在机器翻译中,词频统计可以帮助确定翻译的单词或符号。在信息检索中,词频统计可以帮助确定查询中最重要的单词或符号,以便进行查询匹配。

        总之,词频统计是自然语言处理中的一个重要任务,其目的是为后续的文本分析、情感分析、机器翻译等任务做好准备。

常用的方法和工具:

  1. Python:Python 是一种非常流行的编程语言,有许多库和工具可以用于文本处理和统计,其中最流行的是 NumPy、Pandas 和 SciPy。可以使用这些库中的任何一个来计算文本中词频统计,例如使用 NumPy 中的 str_freq 函数来计算字符串中单词出现的频率。

  2. R:R 是一种统计软件,可以轻松地进行数据可视化和统计分析。可以使用 R 中的 text mining 包来计算文本中词频统计,例如使用 tm 包中的 tf_idf 函数来计算文本的分词和词频统计。

  3. Java:Java 是一种流行的编程语言,也有许多库和工具可以用于文本处理和统计。可以使用 Java 中的 Apache Commons Text 和 Apache Commons Collections 库来计算文本中词频统计,例如使用 Commons Text 中的 getWords method 来获取文本中的单词。

  4. JavaScript:JavaScript 是一种前端编程语言,也可以用于后端开发。可以使用 JavaScript 中的 Node.js 和 npm 包管理器来运行文本处理和统计任务,例如使用 npm 包中的 text-parser 和 text-count 包来计算文本中词频统计。

Python实现词频统计

 关于python的实现,我给大家介绍两种最常用的方法。

在做词频统计之前,需要要用到前面介绍中文分词封装的函数,然后我这里使用了关于大唐不夜城的一条评论文本作为示范先进行分词。

import re
import jiebadef chinese_word_cut(mytext):jieba.load_userdict('自定义词典.txt')  # 这里你可以添加jieba库识别不了的网络新词,避免将一些新词拆开jieba.initialize()  # 初始化jieba# 文本预处理 :去除一些无用的字符只提取出中文出来new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S)new_data = " ".join(new_data)# 文本分词seg_list_exact = jieba.lcut(new_data)result_list = []# 读取停用词库with open('停用词库.txt', encoding='utf-8') as f: # 可根据需要打开停用词库,然后加上不想显示的词语con = f.readlines()stop_words = set()for i in con:i = i.replace("\n", "")   # 去掉读取每一行数据的\nstop_words.add(i)# 去除停用词并且去除单字for word in seg_list_exact:if word not in stop_words and len(word) > 1:result_list.append(word)      return result_listcomment = '大唐不夜城,不夜城趣味性很高,里面地方特色东西好吃,也有星巴克麦当劳等等选择,有不少场表演,外景夜景一定要薅一个,其它地方很难有这般景象了。娱乐体验了不倒翁,还有十二时辰里面表演更加精彩、内景拍照不错,簋唐楼可以尝试一下沉浸剧本杀……'
comment_cutted = chinese_word_cut(comment)
comment_cutted

0fece00f815945d3951ed54905777f12.png

方法1:使用Pandas库实现

首先使用pandas将前面分词结果进行转化DataFrame类型

import pandas as pd
df = pd.DataFrame(comment_cutted)
df

a25ac7d2bf26456b83be57ee6ded2154.png

 接着使用groupby函数对第0列进行统计,然后降序输出

word_frequency_df = df.groupby(0).size().sort_values(ascending=False)
word_frequency_df

5d70797fe34541b5a0b8c38ec405921a.png

 最后将词频统计的结果保存为文件

# 将词频统计进行保存
word_frequency_df.to_excel('词频统计结果.xlsx') # 保存为excel文件
# word_frequency_df.to_csv('词频统计结果.xlsx')  # 保存为csv文件

d9fd82b6c34444ebbda77b9ae39ad0e3.png

方法2:使用collections库

# 方法2-使用collections库
from collections import Counter
Counter(comment_cutted)

c03aafb885a64d1583a4da84fb4b48d5.png

使用Counter函数对前面的分词结果进行统计,然后使用most_common输出按词频频次降序排列的结果,如果你只想输出前n个单词,传入数值即可。 默认是全部输出。

word_counts = Counter(comment_cutted)
word_counts.most_common()
# word_counts.most_common(10) # 输出词频最高的前十个单词 

 2804cf786fb74dd68b5a9d4cf98d95a0.png

 如果想将上面结果保存为文件的话,执行以下代码:

# 将词频统计结果保存为txt文件
word_counts_top = word_counts.most_common()
with open('词频统计结果.txt','w',encoding='utf-8')as f:for i in word_counts_top:f.write(str(i[0]))f.write('\t')f.write(str(i[1]))f.write('\n')

 94904ec6b3a948e1b6078b6522c72477.png

如果我们想将TOP10高频词进行可视化展示,可以执行下面代码:

import matplotlib.pylab as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示word_counts = Counter(comment_cutted)
word_counts_top = word_counts.most_common()
x = [item[0] for item in word_counts_top[:10]]
y = [item[1] for item in word_counts_top[:10]]
plt.bar(x,y)
plt.title('Top10高频词')
plt.xlabel('词语')
plt.ylabel('频次')
plt.show()

 d0e99d622d014a4b9b20bfb04d3e34f4.png

案例实战

词频分析只是文本分析的一个环节,我在之前的文章中也用到过,大家可以参考学习:

数据分析实例-获取某宝评论数据做词云图可视化

数据分析案例-文本挖掘与中文文本的统计分析

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14380.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【滑动窗口】209. 长度最小的子数组

209. 长度最小的子数组 解题思路 滑动窗口设置前后指针滑动窗口内的元素之和总是大于或者等于s滑动窗口的起始位置: 如果窗口的值大于等于s 窗口向前移动窗口结束位置:for循环的j class Solution {public int minSubArrayLen(int target, int[] nums) {int left 0;// 滑动窗口…

学习系统编程No.28【多线程概念实战】

引言: 北京时间:2023/6/29/15:33,刚刚更新完博客,目前没什么状态,不好趁热打铁,需要去睡一会会,昨天睡的有点迟,然后忘记把7点到8点30之间的4个闹钟关掉了,恶心了我自己…

使用 Rust 实现连接远程 Linux 服务器、发送文件、执行命令

使用 Rust 实现连接远程 Linux 服务器、发送文件、执行命令 文章目录 使用 Rust 实现连接远程 Linux 服务器、发送文件、执行命令一、Rust 概述使用场景优点缺点 二、功能实现1、代码2、运行日志3、服务器文件 一、Rust 概述 Rust 已经听了无数遍,我很清楚它很强&am…

LVS-DR集群

目录 一、构建LVS-DR集群的步骤 实验环境准备: 1、配置负载调度器(192.168.40.200) 1.1 配置虚拟 IP 地址(VIP:192.168.40.190) 1.2 调整 proc 响应参数 1.3 配置负载分配策略 2. 部署共享存储&#xf…

Elasticsearch 基本使用(五)查询条件匹配方式(query query_string)

查询条件匹配方式 概述querytermtermsrangematch_allmatchmatch 匹配精度问题 match_phrasematch_pharse_prefixmatch_bool_prefixmulti_match query_string简单查询一个字段在多个字段上应用同一个条件 (类似multi_match)在所有字段上应用同一个条件 &a…

html掉落本地图片效果

实现一个加载本地图片并掉落的html页面。 说明 将DuanWu.html与zongzi_1.png, zongzi_2.png, zongzi_3.png, yadan.png4张图片放在同一个目录下,然后双击打开DuanWu.html即可。 使用Chrome或Microsoft Edge浏览器打开 若使用IE浏览器打开,下方会出现In…

什么是敏捷测试?

目录 前言: 敏捷测试的定义 敏捷测试的特点 为什么要敏捷测试 缩短价值交付周期 强调质量属于大家 化繁为简节省成本 敏捷测试VS. 传统测试 传统测试如何迁移到敏捷测试 1. 组织文化的转变 2. 组织架构的调整 3. 人员培训与指导 4. 轻流程 敏捷测试成…

一文了解潜力黑马Infiblue:借力Web3,释放元宇宙价值

2013 年,JDN Dionisio 曾发表了一篇名为《3D Virtual Worlds and the Metaverse: Current Status and Future Possibilities》的论文,深入探讨与归纳了虚拟世界的几个发展阶段,可以简单的归纳为: 第一阶段:基于计算机…

Blender基础入门(2):Blender简单渲染

文章目录 我个人的Blender专栏前言渲染基本常识科普Blender渲染设置Blender窗口分栏分屏渲染 渲染设置GPU渲染引擎推荐最大采样 切换摄像机渲染图片渲染采样512和4096差异512采样4096采样 渲染建议 我个人的Blender专栏 Blender简单教学 前言 渲染是从白模到成品的过程&…

CEC2018动态多目标优化算法:基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2018

一、动态多目标优化问题 1.1问题定义 1.2 动态支配关系定义 二、 基于自适应启动策略的混合交叉动态多目标优化算法 基于自适应启动策略的混合交叉动态多目标优化算法(Mixture Crossover Dynamic Constrained Multi-objective Evolutionary Algorithm Based on Se…

药物 3D 打印新突破:圣地亚哥大学用机器学习筛选喷墨打印生物墨水,准确率高达 97.22%

内容一览:药物喷墨打印是一种高度灵活和智能化的制药方式。据相关报告统计,该领域市场规模将在不久的未来呈现指数级增长。过往,筛选合适生物墨水的方法费时且费力,因此也成为药物喷墨打印领域面临的主要挑战之一。为解决这一问题…

禅意工作-诗意生活

“禅意工作,诗意生活”能做到这两点,非常非常非常难。 AI的解释: “禅意工作,诗意生活”是一种追求内心平和与幸福的生活方式,它将工作与生活相结合,达到一种和谐的状态。以下是一些关于如何实现“禅意工…