文本数据分析-(TF-IDF)(1)

文章目录

  • 一、TF-IDF简介
    • 1.意义
    • 2.TF与IDF
      • 1).TF(Term Frequency)
      • 2).IDF(Inverse Document Frequency)
      • 3).TF-IDF
  • 二、应用
  • 三、代码实现
    • 1.文件读取
    • 2.数据预处理
    • 3.排序和输出
    • 4.全部代码

一、TF-IDF简介

1.意义

TF-IDF(Term Frequency-Inverse Document Frequency)是一种在文本挖掘中广泛使用的特征向量化方法,用于评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度。TF-IDF的主要思想是:如果某个词语或短语在一篇文章中出现的频率(TF,Term Frequency)高,并且在其他文章中很少出现(即IDF,Inverse Document Frequency,逆文档频率高),则认为这个词或者短语具有很好的类别区分能力,适合用来分类。

2.TF与IDF

1).TF(Term Frequency)

TF即词频,是指某个词语在文章中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。
TF的计算公式为:
词频 ( T F ) = 某个词在文章中出现的次数 文章的总次数 词频(TF) = \frac{某个词在文章中出现的次数}{文章的总次数} 词频(TF)=文章的总次数某个词在文章中出现的次数

2).IDF(Inverse Document Frequency)

IDF即逆文档频率,其主要思想是:如果包含某个词语的文档越少,则IDF越大,说明这个词语具有很好的类别区分能力。

IDF的计算公式为:
I D F ( t ) = l o g N d f ( t ) + 1 ​ IDF(t)=log\frac{N}{df(t)+1} ​ IDF(t)=logdf(t)+1N

其中,

  • N 是文档集的总文档数。
  • df(t) 是包含词语 t 的文档数。分母加1是为了避免分母为0的情况。

3).TF-IDF

TF-IDF的计算公式则是TF和IDF的乘积:

其中,
T F − I D F ( t , d ) = T F ( t , d ) × I D F ( t ) TF-IDF(t,d)=TF(t,d)×IDF(t) TFIDF(t,d)=TF(t,d)×IDF(t)

  • TF(t,d) 是词语 t 在文档 d 中的词频。
  • IDF(t) 是词语 t 的逆文档频率。

二、应用

在文本挖掘和搜索引擎中,TF-IDF常被用于评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度,进而可以用于信息检索、文本挖掘、用户建模、特征词权重计算等。通过计算文档中每个词的TF-IDF值,可以构建文档的向量表示,进而用于各种文本处理任务,如分类、聚类、相似度计算等。

三、代码实现

在Python中,scikit-learn库提供了TfidfVectorizer类,可以很方便地计算TF-IDF值。例如:
下列六行英语位于task2_1.txt文本中,代码很好地实现了从文本文件中读取数据,使用TfidfVectorizer计算TF-IDF值,并将结果转换为DataFrame以便进一步分析。
在这里插入图片描述

1.文件读取

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pdinfile = open('task2_1.txt','r')corpus = infile.readlines()

打开一个名为 task2_1.txt 的文件,并以只读模式(‘r’)读取其内容。然后使用 readlines() 方法将整个文件的内容读入到一个列表中,其中每个元素都是文件中的一行。这个列表被赋值给变量 corpus。

2.数据预处理

vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform(corpus)
print(tfidf)
wordlist = vectorizer.get_feature_names_out() #获取特征名称,所有的词
print(wordlist)
df = pd.DataFrame(tfidf.T.todense(),index=wordlist)
print(df)
  • 计算TF-IDF:vectorizer 是 TfidfVectorizer 类的一个实例,它负责将文本转换为 TF-IDF
    特征。fit_transform 方法首先学习 corpus中的词汇表(即所有独特的词),然后计算每个文档(或语料库中的每个文本项)中这些词的 TF-IDF 值。
  • 获取特征名称:拟合数据后获取词汇表中所有特征(即词汇表中的词)的名称。
  • 构建DataFrame:使用了tfidf.T.todense()来转置矩阵并转换为密集格式,以便可以将其用作DataFrame的数据。

3.排序和输出

for i in range(0,6):featurelist = df.iloc[:,i].to_list()# featurelist = df.to_numpy().tolist()resdict = {} #排序看看输出结果对不对for j in  range(0,len(wordlist)):resdict[wordlist[j]] = featurelist[j]resdict = sorted(resdict.items(),key=lambda x:x[1],reverse=True)print(resdict)

选取所有的第 i 列,并将其转换为列表。然后创建了一个字典,并根据TF-IDF值对其进行了排序。

4.全部代码

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pdinfile = open('task2_1.txt','r')corpus = infile.readlines()vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform(corpus)
print(tfidf)
wordlist = vectorizer.get_feature_names_out() #获取特征名称,所有的词
print(wordlist)
df = pd.DataFrame(tfidf.T.todense(),index=wordlist)
print(df)
for i in range(0,6):featurelist = df.iloc[:,i].to_list()# featurelist = df.to_numpy().tolist()resdict = {} #排序看看输出结果对不对for j in  range(0,len(wordlist)):resdict[wordlist[j]] = featurelist[j]resdict = sorted(resdict.items(),key=lambda x:x[1],reverse=True)print(resdict)

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

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

相关文章

28 TreeView组件

Tkinter ttk.Treeview 组件使用指南 ttk.Treeview 是 Tkinter 的一个高级控件,用于显示和管理层次化数据。它类似于电子表格或列表视图,但提供了更丰富的功能,如可展开的节点、多列显示等。ttk 模块是 Tkinter 的一个扩展,提供了…

Golang | Leetcode Golang题解之第382题链表随机节点

题目: 题解: type Solution struct {head *ListNode }func Constructor(head *ListNode) Solution {return Solution{head} }func (s *Solution) GetRandom() (ans int) {for node, i : s.head, 1; node ! nil; node node.Next {if rand.Intn(i) 0 { …

《机器学习》数据分析之关键词提取、TF-IDF、项目实现 <下>

目录 一、内容回顾 1、核心算法 2、算法公式 3、拆分文本 二、再次操作 1、取出每一卷的地址和内容 得到下列结果:(此为DF类型) 2、对每一篇文章进行分词 3、计算TF-IDF值 得到以下数据: 三、总结 1、关键词提取 1&a…

数据挖掘之分类算法

分类算法是数据挖掘中常用的一类算法,其主要任务是根据已知的训练数据(即带有标签的数据)构建模型,然后利用该模型对新的数据进行分类。分类算法广泛应用于金融、医疗、市场营销等领域,用于预测、决策支持等任务。以下…

STM32G474采用“多个单通道ADC转换”读取3个ADC引脚的电压

STM32G474采用“多个单通道ADC转换”读取3个ADC引脚的电压:PC0、PA1和PA2。本测试将ADC1_IN6映射到PC0引脚,ADC12_IN2映射到PA1引脚,ADC1_IN3映射到PA2引脚。 1、ADC输入 ADC输入电压范围:Vref– ≤ VIN ≤ Vref ADC支持“单端输入…

Java 集合Collection(List、Set)Map

集合的理解和优点 1)可以动态保存任意多个对象,使用比较方便!2)提供了一系列方便的操作对象的方法: add、remove、 set、 get等3)使用集合添加,删除新元素的示意代码- Java集合的分类 Java的集合类很多,主要分为两大类,如图: 1…

iPhone备忘录不小心删除了怎么办?

在日常使用iPhone的过程中,备忘录作为我们记录重要信息、灵感闪现和日常琐事的小帮手,其重要性不言而喻。然而,有时候因为操作失误或是不小心点击,我们可能会将珍贵的备忘录内容删除,这无疑会让人感到焦虑与不安。但请…

深入垃圾回收:理解GC的核心算法与实现

垃圾回收(Garbage Collection,GC)是现代编程语言中一项关键技术。它不仅解决了内存管理中的诸多问题,还为开发者提供了一个更高效、更安全的编程环境。本文将深入探讨GC的起源、主要算法以及这些算法在不同编程语言中的具体实现。…

考试:计算机网络(01)

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能:数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标:速率、带宽(频带宽度或传送线路…

嵌入式数据库

概述 1.作用:存储大量数据,专业存储数据 存储在内存(数组,变量,链表)上的特点:程序运行结束,或者掉电,数据会丢失。 存储在硬盘(文件)上的特点…

vue3+ts+vite项目代码检查报错(vue-tsc)

报错原因:vue-tsc与typescrip版本不兼容 排查流程: 1、开始以为vue-tsc或者typescript版本太低,通过npm update更新,更新后还是报错 2、项目中package.json文件中typescript、vue-tsc版本并无兼容问题 3、控制台执行npm list发…

【HarmonyOS】模仿个人中心头像图片,调用系统相机拍照,从系统相册选择图片和圆形裁剪显示 (一)

【HarmonyOS】头像图片,调用系统相机拍照,从系统相册选择图片和圆形裁剪显示 (一) Demo效果展示: 方案思路: 使用photoAccessHelper实现系统相册选择图片的功能。此API可在无需用户授权的情况下&#xff…

万亿生成式AI市场,商汤迎来“长坡厚雪”

AI掀起了全球科技玩家的军备竞赛,然而声浪越强噪音越多,这个领域的混乱程度也变得远超以往。就连刚刚公布财报的英伟达,市场也没有买账,因为担心AI驱动的增长高峰已过,接下来,下游会更看重实际成果。 “囤…

javaee、ssm(maven)、springboot(maven)项目目录结构以及编译后文件目录存放路径

javaee项目目录结构: src下的文件或者是源码编译后都会放在WebRoot(项目根目录)文件夹\WebRoot\WEB-INF\classes目录中。 编译后的文件夹目录如下: 以上为普通的javaee项目目录结构,同maven工程目录结构是不一样的。…

07-图5 Saving James Bond - Hard Version(C)

哈哈,我是真的服了,写了好几天结果给我个这,气死我了,果然还有很大的进步空间。如果有c测试点4,就好了。 又写了一天,是真解决不了了,这个问题等我明白一定来解答 哈哈, 测试点提示内…

【SQL】餐馆营业额七日均线数据

目录 题目 分析 代码 题目 表: Customer ------------------------ | Column Name | Type | ------------------------ | customer_id | int | | name | varchar | | visited_on | date | | amount | int | -----------------------…

Docker 数据卷管理及优化

目录 1 数据卷实现的目的 2 为什么要用数据卷 3 docker的两种数据卷 3.1 bind mount 数据卷 实践实例: 3.2 docker managed 数据卷 实验实例: 3.3 bind mount 数据卷和docker managed 数据卷的对比 3.3.1 相同点: 3.3.2 不同点: …

【网络安全】服务基础第一阶段——第二节:Windows系统管理基础----虚拟化IP地址以及用户与组管理

目录 一、Windows网络测试工具 1.1.ping命令 1.2.tracert命令 二、IP实验内容 2.1 实验一 2.2 实验二 三、用户与组管理 3.1 用户与账户概述 3.2 用户管理 3.3 用户增删改查 3.4 增加用户 3.5 修改用户属性 3.6 删除用户 3.7 组账户概述 3.8 组账户增删改查 四、…

没有编程基础?这款数据分析工具也能轻松上手

在当前快节奏的工业环境中,工厂管理者越来越依赖数据分析来优化生产流程、提升效率、降低成本。然而,很多传统的数据分析工具不仅操作复杂,而且费用高昂,让不少工厂望而却步。最近,我发现了一款非常实用的报表工具&…

安卓主板_MTK安卓主板定制_联发科主板/开发板方案

这款安卓主板采用了联发科的MTK8788、MTK8768及MTK8766系列芯片平台,运用了64位四核/八核 Cortex-A53/A73架构,主频高达2.0 GHz。主板配置了4GB LPDDR3内存和64GB eMMC存储,同时配备了ARM Mail-T450 MP2图形处理单元(GPU),使其在4…