当前位置: 首页 > news >正文

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

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 的示例:

from sklearn.feature_extraction.text import TfidfTransformer, CountVectorizercorpus = ['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 的示例:

from gensim.models import TfidfModelfrom gensim.corpora import Dictionarycorpus = [['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 的表示方法更紧凑,因为它仅存储非零值。

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

假设我们有以下语料库:

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

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

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 数据可能如下所示:

[[(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.lryc.cn/news/238702.html

相关文章:

  • spring注解
  • SpringCloud实用篇02
  • Nginx快速入门教程,域名转发、负载均衡
  • ElasticSearch之健康状态
  • java io流中为什么使用缓冲流就能加快文件读写速度
  • 【鸿蒙最新全套教程】<HarmonyOS第一课>1、运行Hello World
  • 求二叉树中指定节点所在的层数(可运行)
  • Ubuntu18 Opencv3.4.12 viz 3D显示安装、编译、移植
  • EPSon打印机更换色带
  • 电脑游戏录屏软件,记录游戏高光时刻
  • Hadoop性能调优建议
  • 算法的奥秘:常见的六种算法(算法导论笔记2)
  • Python算法——树的路径和算法
  • 数据结构之链表练习与习题详细解析
  • QT中使用unity
  • QTableView/QTableWidget设置单元格字体颜色及背景色
  • 电脑上可以写便签的软件哪些界面比较可爱且好用?
  • 2021秋招-总目录
  • HTML5生成二维码
  • 大数据-之LibrA数据库系统告警处理(ALM-25005 Nscd服务异常)
  • NLP:使用 SciKit Learn 的文本矢量化方法
  • 这些仪表板常用的数据分析模型,你都见过吗?
  • 【Proteus仿真】【Arduino单片机】多功能数字时钟设计
  • c语言回文数
  • 【学习记录】从0开始的Linux学习之旅——编译linux内核
  • uni-app - 日期 · 时间选择器
  • 使用USB转JTAG芯片CH347在Vivado下调试
  • 硬技能之上的软技巧(三)
  • mysql 查询
  • 2311rust过程宏的示例