停用词(stop words)+TF-IDF实现

news2024/9/21 19:05:43

一、什么是停用词?

在汉语中,有一类没有实际意义的词语,比如组词“的”,连词“以及”,副词“甚至”,语气词“吧”,被称为停用词。一个句子去掉这些停用词,并不影响理解。所以,进行自然语言处理时,一般将停用词过滤掉。一般词表文件中每一行存储一个停用词,行数就是停用词个数。目前一些业界公开的中文停用词表如下表所示。当然,也可以根据任务的需求完全可以自我定制停用词表。

词表名词表文件地址
四川大学机器智能实验室停用词库scu_stopwords.txtGitHub - goto456/stopwords: 中文常用停用词表(哈工大停用词表、百度停用词表等)
中文停用词表cn_stopwords.txtGitHub - goto456/stopwords: 中文常用停用词表(哈工大停用词表、百度停用词表等)
哈工大停用词表hit_stopwords.txtGitHub - goto456/stopwords: 中文常用停用词表(哈工大停用词表、百度停用词表等)
百度停用词表       baidu_stopwords.txtGitHub - goto456/stopwords: 中文常用停用词表(哈工大停用词表、百度停用词表等)

二、停用词怎么构建?

一般可以把TF-IDF非常低的K个词语找出来,就能构成一个初步的停用词表。

TF-IDF(term frequency-inverse document frequency,词频-逆向文件频率)算法是一种用于信息检索与文本数据挖掘的常用加权技术。它用统计学方法评估一个词对某篇文章的重要程度,常用来提取文章的关键词。

TF-IDF算法的核心思想就是通过统计的方法,评估一个词对一个文件集或者语料库的重要程度。一个词的重要程度与它在文章中出现的次数成正比,跟它在语料库出现的次数成反比。

TF:词频,TF=某词在某文档中出现的次数   (ps:也有TF=某次在某 文档中出现的次数/该文档的总词量 这种计算,但Sklearn是采用直接计算次数。)

也就是说,就一篇文章局部来看,一个单词出现的次数越多越重要,但这并不是绝对的。比如,a, the, of等单词出现的次数一定不会少,但是它们并没有什么重要信息,所以,接下来引入IDF.

IDF:逆文本频率

指的是某个词在一个文件集或者语料库中区分力指标。计算公式为:

log \frac{Nd+1}{df(d,t)+1}+1

其中,Nd是训练集文档总数量,df(d,t)是包含某个单词的文档数量, +1的原因是避免分母为0.

也就是说,对一个文件集或者语料库而言,包含某个单词的文档越少,IDF的值越大,这个词的区分力越强,就越重要。

TF-IDF=TF*IDF

用sklearn实现,代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
    "what is the weather like today",
    "what is for dinner tonight",
    "this is a question worth pondering",
    "it is a beautiful day today"
]

tfidf_vec = TfidfVectorizer()

tfidf_matrix = tfidf_vec.fit_transform(corpus)

print(tfidf_vec.get_feature_names_out())# 利用get_feature_names得到不重复的单词

print(tfidf_vec.vocabulary_)#得到每个单词对应的ID
print(tfidf_matrix)#输出TF-IDF矩阵

得到的结果如下:

['beautiful' 'day' 'dinner' 'for' 'is' 'it' 'like' 'pondering' 'question'
 'the' 'this' 'today' 'tonight' 'weather' 'what' 'worth']
{'what': 14, 'is': 4, 'the': 9, 'weather': 13, 'like': 6, 'today': 11, 'for': 3, 'dinner': 2, 'tonight': 12, 'this': 10, 'question': 8, 'worth': 15, 'pondering': 7, 'it': 5, 'beautiful': 0, 'day': 1}
  (0, 11)	0.3710221459250386
  (0, 6)	0.47059454669821993
  (0, 13)	0.47059454669821993
  (0, 9)	0.47059454669821993
  (0, 4)	0.24557575678403082
  (0, 14)	0.3710221459250386
  (1, 12)	0.506765426545092
  (1, 2)	0.506765426545092
  (1, 3)	0.506765426545092
  (1, 4)	0.2644512224141842
  (1, 14)	0.3995396830595886
  (2, 7)	0.4838025881780501
  (2, 15)	0.4838025881780501
  (2, 8)	0.4838025881780501
  (2, 10)	0.4838025881780501
  (2, 4)	0.25246826075544676
  (3, 1)	0.506765426545092
  (3, 0)	0.506765426545092
  (3, 5)	0.506765426545092
  (3, 11)	0.3995396830595886
  (3, 4)	0.2644512224141842

Process finished with exit code 0

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

资产管理系统

目录 1、资产管理模块 资产入库 ​编辑 闲置资产分配 资产调配 资产回收 资产报废 车辆维修 2、资产设置模块 资产标准规格 资产分类 3、资产报表模块 全部资产报表 已分配资产报表 资产分类报表 到期资产报表 机构资产报表 资产折旧报表 机构分类报表 资产…

〖ChatGPT实践指南 - 零基础扫盲篇⑤〗- OpenAI API 演示 Demo 之宠物名字生成器

文章目录 ⭐ 运行 Demo应用 - 宠物名字生成器🌟 安装 - node.js🌟 利用 git 下载 Demo应用 - 宠物名字成器🌟 添加 API 秘钥🌟 安装依赖并运行Demo应用 - 宠物名字成器 ⭐ 访问并测试 Demo应用 - 宠物名字成器 在上一章节&#xf…

最新版TensorFlow的GPU版本不支持原生Windows系统(大坑预警)

一、前言 首先需要说明,按照官方中文文档安装是无法正常检测到GPU的。因为TensorFlow 2.10是支持原生Windows系统GPU环境的最后版本,默认安装的版本都比较高。 中文文档没有说明,英文文档是有提到的: (我在GitHub上找…

PostgreSQL-布尔类型

布尔类型 boolean的值要么是true,要么是false,如果是unknown状态,用NULL表示。 boolean在SQL中可以用不带引号的TRUE或FALSE表示,也可以用其他表示“真”和“假”的带引号字符表示,如true、false、yes、no等等。 cr…

操作系统之进程同步和互斥

目录 什么是进程同步和进程互斥 进程互斥的软件实现方法 进程互斥的硬件实现方法 互斥锁 信号量机制 用信号量实现进程互斥和同步 生产者消费者问题 多生产者多消费者问题 吸烟者问题 读者写者问题 哲学家进餐问题 管程 死锁 什么是进程同步和进程互斥 进程同步 进…

【Golang开发入门】一篇文章弄懂:值类型、指针类型

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Go语言核心编程近期目标:写好专栏的每一篇文章 目录 一、前言…

【数据分析之道-Pandas(二)】DataFrame

文章目录 专栏导读1、DataFrame简介2、DataFrame创建2.1字典创建DataFrame2.2列表创建DataFrame2.3ndarrays 创建DataFrame2.4CSV文件创建DataFrame 3、DataFrame基本操作3.1添加列3.2删除列 专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者&…

什么是 TDSQL-C MySQL版 ---- 数据库开发者视角

我们从设计演化的角度来讲什么是 TDSQL-C MySQL 版本。 首先,我们有了一个纯净版 MySQL。它是一个单机数据库。存算分离:然后,我们把 MySQL 的存储引擎拿掉,换成云存储。这就成了存算分离。这时,在用户看来它还是一个…

测牛学堂:2023软件测试入门系列(软件测试方法之流程分析法)

流程分析法 流程就是用户为了完成一定的业务目的,需要进行的一系列的操作。 流程分析法又叫场景分析法,是编写测试用例最常用的方法之一。 流程分析法不校验单个功能点的正确性,只关心流程能不能走通。 流程分类的几个概念 场景&#xff1…

Arduno ESP8266接入中移OneNet动态显示实时数据

Arduno ESP8266接入中移OneNet动态显示实时上传数据 ✨本案例基于HTTP协议. 🌼网页查看动态数据: 📓Onenet产品创建 从全部产品服务点击进入-多协议接入 2.创建基于HTTP协议的产品 添加产品属性 创建产品成功后,可以开始添加具体的设备了。

本周一至周三总结

周一 学习如何进行竞品分析 对软件杯项目进行了竞品分析,测试了十余个强相关网站,为团队写好了竞品分析报告 分别对主要目标,竞品优劣点,竞品选择原因,产品创新点等进行了分析和阐述 周二 下午晚上刷了五道题 题解…

不是什么高深玩意,Arrays.asList、ArrayList.subList需要注意的坑

前言 集合是日常工作中几乎每天都在用的玩意,也是八股文中被翻烂的东西,诸如List、Map,确实很重要也很实用,但是不注意细节就比较容易踩坑。比较常见的就是今天要整理的Arrays.asList和ArrayList.subList。不是什么高深的东西&…

第一章设计模式前置知识

文章目录 软件设计模式的概念学习设计模式的必要性设计模式分类UML图类的表述方式类的表示方式 类与类之间的表示方式关联关系聚合关系组合关系依赖关系继承关系实现关系 软件设计原则开闭原则实例 里氏代换原则反例优化 依赖倒转原则组装电脑改进反例 接口隔离原则安全门案例 …

1分钟学会Midjourney十种绘图风格关键词

Midjourney最新V5版的卡通模型中最流行的就是皮克斯,今天介绍十种绘图风格。我们统一用如下描述词来绘制,每次只是风格不一样,对比看看。 首先我们先画一个皮克斯风格(Pixar),打开ai绘图软件,点击左上角的图像绘制&a…

centos主机测磁盘读写速度极限

下面将使用dd命令在CentOS主机上测试磁盘的极限速度 先测试磁盘的极限写入速度 dd if/dev/zero of/tmp/testfile bs1M count3072 convfdatasync,notrunc statusprogress 该命令将在/tmp目录下创建一个名为testfile的文件,并向其中写入3GB的数据 if/dev/zero&#x…

【算法】【算法杂谈】折纸问题(完全二叉树解法)

目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…

Camunda8流程引擎私有化安装部署快速入门

Camunda8是基于标准云原生架构设计开发的,所以官方优先推荐基于Kubernetes和docker的方式安装部署Camunda8,考虑到大部分开发者不一定具备Kubernetes环境和云原生相关知识,所以本文介绍如何在一台windows机器下手动安装运行Camunda8的方式&am…

Linux文件操作基础及基本I/O函数使用

文章目录 前言一、基础命令简单讲解二、文件描述符三、open、read、write函数讲解1.open函数2.read函数3.write函数 四、使用open、read、write操作标准输入输出总结 前言 Linux是一个基于文件系统的操作系统,文件操作是其中一项最基本的任务之一。通过文件操作&am…

什么!appium安装不上???快来试试这种方法吧!——appium的手动安装步骤教程

前言 相信你不少软件测试行业小伙伴应该在用npm安装appuim或者是cpm安装appuim途中也碰到下面一些报错吧,接下来小陈教你改为手动安装appium吧。 一、手动下载appium安装包 appuim手动安装包下载链接: appium / Appium.app / Downloads — Bitbucket &a…

《Netty》从零开始学netty源码(四十四)之PoolChunk释放内存

free 当PoolChunk需要释放内存空间时可调用free方法,具体的源码过程如下: 在这个过程中最重要的是第三步的collapseRuns方法,当释放了空间以后要更新runsAvail和runAvailsMap的信息,如果handle对应的内存空间的上边界以及下边界是…