在 python 2.7 中计算 TF-IDF(三行代码)。这段代码有效吗?

Posted

技术标签:

【中文标题】在 python 2.7 中计算 TF-IDF(三行代码)。这段代码有效吗?【英文标题】:calculate TF-IDF in pyton 2.7 (with three line of code). Does this code work? 【发布时间】:2020-12-25 02:53:57 【问题描述】:

我正在尝试在大约 7000 个文档的语料库中计算 tfidf 值。 在互联网上搜索,我创建了很多示例(当我尝试为每个文档创建 uniquewords 矩阵时,其中许多示例被锁定)。唯一可行的是下面的代码

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

tfidf = TfidfVectorizer()
x = tfidf.fit_transform(corpus)
df_tfidf = pd.DataFrame(x.toarray(), columns=tfidf.get_feature_names())
print(df_tfidf)

假设以下语料库

corpus = [
 'This is the first document.',
 'This document is the second document.',
 'And this is the third one.',
 'Is this the first document?']

它产生了这个输出:

此代码也适用于我的情况,实际上它会生成一个包含 7180 行和 10390 列的矩阵。但我不确定它是否正确。在您看来,这是为一组文档计算 tfidf 的有效解决方案吗?


p.s:我可以插入我关注的指南链接吗?

【问题讨论】:

为什么你认为它不正确?对我来说,它看起来是正确的 没有什么特别的原因,但对我来说似乎太简单了。我看到的所有其他解决方案都有更多的代码也更复杂 这也是sklearn website 上解释的正确方法 @KimTang 仅当已知代码正确时。对代码是否真的按照应有的方式执行存在疑问的代码,与代码审查无关(请参阅他们的help center)。 @KimTang 上面帖子中的代码不是 OP 的代码,因此在代码审查中偏离主题 - “我创建了很多示例 [...]。似乎唯一可行的是下面这段代码” 【参考方案1】:

是的,这是计算 tf-idf 矩阵的正确方法。

你正在使用

x = tfidf.fit_transform(corpus)

首先将您的TfidfVectorizer 适合您的语料库,然后相应地转换语料库,以便您将 tf-idf 矩阵作为x

【讨论】:

以上是关于在 python 2.7 中计算 TF-IDF(三行代码)。这段代码有效吗?的主要内容,如果未能解决你的问题,请参考以下文章

在python中使用sklearn为n-gram计算TF-IDF

Python:在 Pandas 中计算两列之间的 tf-idf 余弦相似度时出现 MemoryError

python 分词计算文档TF-IDF值并排序

TF-IDF计算过程

使用不同的方法计算TF-IDF值

Python Scikit-learn:TF-IDF 中的空词汇