在 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