sklearn中的TfidfTransformer和gensim中的TfidfModel的区别

news/2024/7/9 8:41:29 标签: sklearn, 人工智能, python

sklearn.feature_extraction.text.TfidfTransformer 和 gensim.models.TfidfModel 都是用于计算文本数据的 TF-IDF 值的工具。它们的主要区别在于实现方式和输入数据的格式。

1、实现方式和输入数据格式:

TfidfTransformer 是 scikit-learn 中的一个类,它接受一个词频矩阵(通常是由 CountVectorizer 生成的稀疏矩阵),然后将其转换为一个 TF-IDF 矩阵。输入数据通常是一个二维数组,其中每一行表示一个文档,每一列表示一个词汇。

TfidfModel 是 Gensim 中的一个类,它接受一个词袋(Bag-of-words)表示的语料库(通常是由 gensim.corpora.Dictionary 生成的词袋表示的文档列表),然后将其转换为一个 TF-IDF 表示的语料库。输入数据通常是一个列表,其中每个元素是一个由词汇 ID 和词频组成的元组列表。

2、如何使用:

以下是使用 TfidfTransformer 的示例:

python">from sklearn.feature_extraction.text import TfidfTransformer, CountVectorizer



corpus = ['This is a sample text', 'Another example text', 'One more example']



vectorizer = CountVectorizer()

X = vectorizer.fit_transform(corpus)



transformer = TfidfTransformer()

tfidf_matrix = transformer.fit_transform(X)

print(tfidf_matrix)

以下是使用 TfidfModel 的示例:

python">from gensim.models import TfidfModel

from gensim.corpora import Dictionary



corpus = [['this', 'is', 'a', 'sample', 'text'],

['another', 'example', 'text'],

['one', 'more', 'example']]



dictionary = Dictionary(corpus)

bow_corpus = [dictionary.doc2bow(doc) for doc in corpus]



model = TfidfModel(bow_corpus)

tfidf_corpus = model[bow_corpus]

for doc in tfidf_corpus:

print(doc)

3、数据格式和数据维度上的区别

sklearn.feature_extraction.text.TfidfTransformer 和 gensim.models.TfidfModel 生成的 TF-IDF 数据格式和数据维度上的区别主要体现在以下几点:

  • 数据格式:

TfidfTransformer 生成的数据是一个稀疏矩阵(scipy.sparse.csr_matrix),其中每一行表示一个文档,每一列表示一个词汇。矩阵中的值表示对应文档和词汇的 TF-IDF 值。

TfidfModel 生成的数据是一个列表,其中每个元素是一个由词汇 ID 和词汇的 TF-IDF 值组成的元组列表。每个元组列表表示一个文档,元组中的第一个元素是词汇的 ID(在 Gensim 的 Dictionary 中定义),第二个元素是该词汇的 TF-IDF 值。

  • 数据维度:

TfidfTransformer 生成的稀疏矩阵的维度是 (文档数量 x 词汇数量)。矩阵中的每个值表示对应文档和词汇的 TF-IDF 值。矩阵可能包含许多零值,因为不是每个词汇都出现在每个文档中。

TfidfModel 生成的数据是一个列表,其长度等于文档的数量。在这个列表中,每个元素是一个元组列表,表示一个文档。元组列表的长度等于该文档中出现的词汇数量,因此不同文档的元组列表长度可能不同。这意味着 Gensim 的表示方法更紧凑,因为它仅存储非零值。

要更好地理解这两种方式,可以考虑以下示例:

假设我们有以下语料库:

python">corpus = ['This is a sample text', 'Another example text', 'One more example']

使用 TfidfTransformer 生成的 TF-IDF 矩阵可能如下所示(值可能略有不同,因为 TF-IDF 的计算方法可能有所不同):

python">array([[0. , 0.41285857, 0.41285857, 0.69903033, 0.41285857],

[0.69903033, 0.41285857, 0.41285857, 0. , 0.41285857],

[0. , 0.41285857, 0.41285857, 0. , 0.41285857]])

使用 TfidfModel 生成的 TF-IDF 数据可能如下所示:

python">[[(0, 0.41285857), (1, 0.41285857), (2, 0.69903033), (3, 0.41285857)],

[(4, 0.69903033), (1, 0.41285857), (3, 0.41285857)],

[(5, 0.69903033), (1, 0.41285857), (3, 0.41285857)]]

可以看到,TfidfTransformer 生成的稀疏矩阵包含文档和词汇之间的所有可能组合,而 TfidfModel 生成的列表仅包含实际出现在文档中的词汇及其 TF-IDF 值。这两种表示方法在实际应用中都有用途,选择哪种方法取决于您的需求和使用的其他库。


http://www.niftyadmin.cn/n/5204161.html

相关文章

【Linux】C文件系统详解(四)——磁盘的物理和抽象结构

文章目录 磁盘结构磁盘物理结构磁盘的具体物理结构磁盘结构的逻辑抽象 文件系统BootBlockSuperBlockGroupDescriptorTableinode tableDataBlocksinodeBitmapblockBitmaplinux中的inode 和文件名如何理解文件的增删查改删 补充细节1.如果文件误删了,我们该怎么办?2.inode确定分…

《QT从基础到进阶·三十七》QWidget实现左侧导航栏效果

NavigationBarPlugin插件类实现了对左侧导航栏的管理,我们可以在导航栏插件中添加界面,并用鼠标点击导航栏能够切换对应的界面。 源码在文章末尾 实现效果如下: NavigationBarPlugin实现的接口如下: class NAVIGATIONBAR_EXP…

多普勒流速仪的功能作用是什么?

我国地域广大,各地降雨分布不均,某些城市经常会出现连续的降雨进而导致城市排水压力过大,为了提高城市应对排水过量的极端情况的出现,亟需一种方案能够对城市排水进行有效及时的监测,从而能够及时的采取应对方案。 在污…

接口自动化中cookies的处理技术

一,理论知识 为什么有cookie和session? 因为http协议是一种无状态的协议,即每次服务端接受到客户端的请求时都时一个全新的请求,服务器并不知道客户端的请求记录,session和cookie主要目的就是弥补http的无状态特性 …

Python 装饰器用法详解

目录 一、基本概念 二、语法形式 三、用法示例 1、用于日志记录 2、用于性能测试 3、用于事务处理 4、用于缓存结果 5、用于权限验证 总结 Python装饰器是Python中一种非常有用且强大的工具,它允许我们在不修改原有函数或类的基础上,对它们进行…

Linux C IO复用

IO复用 概述IO模型阻塞式IO非阻塞式IOIO复用select、poll、epoll异同 信号驱动式IO异步IO select函数select示例代码 poll函数poll示例代码 epoll函数创建  epoll_create注册、修改、删除  epoll_ctl轮询 I/O 事件的发生  epoll_waitepoll示例代码 基于TCP和epoll在线多人…

Python安装入门

目录 1 从应用商店安装2 通过官方安装3 验证安装是否成功4 打印hello world总结 1 从应用商店安装 推荐使用微软的应用商店安装,打开开始菜单 在应用商店搜索python 选择最新的版本下载并安装即可 2 通过官方安装 也可以使用官网的安装包,输入如下网…

实在智能携“TARS大模型”入选“2023中国数据智能产业AI大模型先锋企业”

近日,由数据猿与上海大数据联盟联合主办的“2023企业数智化转型升级发展论坛”在上海圆满收官。 论坛颁奖典礼上,《2023中国数据智能产业AI大模型先锋企业》等六大榜单正式揭晓,旨在表彰在AI领域为数智化升级取得卓越成就和突出贡献的企业&am…