文本分析-使用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.rhkb.cn/news/367888.html

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

相关文章

【Python机器学习】模型评估与改进——带交叉验证的网格搜索

虽然将数据划分为训练集、验证集、测试集的方法是可行的,也相对常用,但这种方法对数据的划分相当敏感,为了得到对泛化性能的更好估计,我们可以使用交叉验证来评估每种参数组合的性能,而不是仅将数据单次划分为训练集与…

【简单讲解下npm常用命令】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

最靓丽的C++开源通知弹框SnoreToasts自动监听软件及网页通知

SnoreToasts,作为一款轻量级的C开源项目,为开发者提供了一个便捷的方式来在Windows操作系统上展示通知弹框(Toast Notifications)。 特点与优势 轻量级:SnoreToasts采用了简洁的代码设计,避免了不必要的依…

昇思25天学习打卡营第3天|yulang

今天主要学习03-张量Tensor,主要包含了处理创建张量、张量的属性、张量索引和张量运算,稀疏张量,有点看不太懂,感觉要开始入门到放弃了?张量在构建和训练深度学习模型中的实际应用,如卷积神经网络。 张量&a…

2024 AIGC 技术创新应用研讨会暨数字造型设计师高级研修班通知

尊敬的老师、领导您好! 为深入响应国家关于教育综合改革的战略部署,深化职业教育、高等教育改革,发挥企业主体重要作用,促进人才培养供给侧和产业需求侧结构要素全方位融合,充分把握人工智能创意式生成(AIGC)技术在教育领域的发展…

如何使用代理 IP 防止多个 Facebook 帐户关联 - 最佳实践

在社交媒体被广泛应用的今天,Facebook作为全球最大的社交网络平台之一,面临着很多挑战,其中之一就是用户行为的管理和安全。 为了防止多个账户之间的关联和滥用,Facebook需要采取一系列措施,其中包括使用静态住宅代理…

web自动化(三)鼠标操作键盘

selenuim 键盘操作 import timefrom selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selen…

【LeetCode的使用方法】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🔮LeetCode的使用方法 🔮LeetCode 是一个在线编程平台,广泛…

Transformation(转换)开发-switch/case组件

一、switch/case组件-条件判断 体育老师要做一件非常重要的事情:判断学生是男孩还是女孩、或者是蜘蛛,然后让他们各自到指定的队伍中 体育老师做的事情,我们同样也会在Kettle中会经常用来。在Kettle中,switch/case组件可以来做类似…

【Linux】多线程(一万六千字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 线程的概念 线程的理解(Linux系统为例) 在Linux系统里如何保证让正文部分的代码可以并发的去跑呢? 为什么要有多进程呢? 为…

Jedis、Lettuce、RedisTemplate连接中间件

jedis就像jdbc一样&#xff0c;用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…

IO多路复用学习

Linux中的I/O多路复用 相关基础概念 在学习I/O多路复用之前&#xff0c;先学习一些相关的基础概念&#xff0c;便于理解。 内核缓冲区和用户缓冲区 &#x1f62e; CPU 上会运行两种程序&#xff0c;一种是操作系统的内核程序&#xff08;也称为系统程序&#xff09;&#x…

Redis持久化详解

【关闭文件、AOF 刷盘、释放内存这三个任务都有各自的任务队列】所以不是单线程 Redis有两种持久化方案&#xff1a; RDB持久化 AOF持久化 基于Redis集群解决单机Redis存在的问题 【Redis是单进程的】 【也有人做分布式section】 【主从集群中多个从就是做负载均衡的】 …

浅谈如何在linux上部署java环境

文章目录 一、部署环境1.1、JDK1.2、Tomcat1.3、MySQL 二、将自己写的的程序部署到云服务器上 一、部署环境 为了在linux上部署 Java web 程序&#xff0c;需要安装一下环境。 1.1、JDK 直接使用 yum 命令安装 openjdk。我们 windows系统上 下载的是 oracle 官方的 jdk。而 …

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云&#xff0c;为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址&#xff1a;https://unicloud.dcloud.net.cn 文档&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…

python 第6册 辅助excel 002 批量创建非空白的 Excel 文件

---用教授的方式学习 此案例主要通过使用 while 循环以及 openpyxl. load_workbook()方法和 Workbook 的 save()方法&#xff0c;从而实现在当前目录中根据已经存在的Excel 文件批量创建多个非空白的Excel 文件。当运行此案例的Python 代码&#xff08;A002.py 文件&#xff0…

AnyView 对 SwiftUI 性能的影响

文章目录 前言测试设置动画卡顿浏览数据没有 AnyView 有 AnyView在浏览数据时修改没有 AnyView 有 AnyView分析结果总结 前言 AnyView 是一种类型擦除的视图&#xff0c;对于 SwiftUI 容器中包含的异构视图非常方便。在这些情况下&#xff0c;你不需要指定视图层次结构中所有视…

Java环境变量的设置

JAVA环境变量的设置 1.设置环境变量的作用2.如何设置环境变量2.1 找到系统的环境变量2.2 设置环境变量 1.设置环境变量的作用 说明&#xff1a;在Java中设置环境变量主要是为了能够让Java运行时能够找到Java开发工具包&#xff08;JDK&#xff09;的安装位置以及相关的库文件。…

【强化学习】第01期:绪论

笔者近期上了国科大周晓飞老师《强化学习及其应用》课程&#xff0c;计划整理一个强化学习系列笔记。笔记中所引用的内容部分出自周老师的课程PPT。笔记中如有不到之处&#xff0c;敬请批评指正。 文章目录 1.1 概述1.2 Markov决策过程1.2.1 Markov Process (MP) 马尔科夫过程1…

大模型对汽车行业意味着什么?_汽车企业大模型

引 言 大模型是一种利用海量数据进行训练的深度神经网络模型&#xff0c;其特点是拥有庞大的参数规模和复杂的计算结构。通过在大规模数据集上进行训练&#xff0c;大模型能够学习到丰富的模式和特征&#xff0c;从而具备强大的泛化能力&#xff0c;可以对未知数据做出准确的预…