将 tf-idf 值添加为矩阵中的列

Posted

技术标签:

【中文标题】将 tf-idf 值添加为矩阵中的列【英文标题】:Add tf-idf values as columns in a matrix 【发布时间】:2018-12-01 18:23:16 【问题描述】:
from sklearn.feature_extraction.text import TfidfVectorizer

item = list(df['item1']) + list(df['item2'])
tfidf = TfidfVectorizer()
tfidf_sp = tfidf.fit_transform(item)

for i in len(list(df['item1'])):
    new_list =[]
    new_list.append(tfidf.idf_)
df['updated_item'] = list(new_list)

我试图将 tfidf 分数添加为特征。方法对吗?

item1 的形状为 (400k),与 item2 的形状相同。 tfidf_sp 的形状为 (800k, 100k)。

【问题讨论】:

你不应该使用tfidf_sp作为你的特征吗?另外,您是否已经完成了训练测试拆分? 如果我对 item1 使用 new_list.append(tfidf_sp[0:400k]) 并且对 item2 使用相同。我的内核一直在死机。 为什么不直接df['updated_item'] = tfidf.fit_transform(item) for i in tqdm(list(df['item1'])): new_list =[] new_list.append(tfidf.idf_) df['updated_item'] = list(new_list) 我想同时查看进度并逐个更新 你能告诉我我犯了什么错误吗? 【参考方案1】:
import pandas as pd

pd.DataFrame(tfidf_sp, columns = tfidf.get_feature_names())

这将为您提供一个矩阵,其中列作为 tfidf 词汇表,每一行包含与每个项目对应的 tfidf 值。

希望这会有所帮助。

编辑:

尝试将得到的term-document矩阵转化为数组,如下:

tfidf_sp = tfidf.fit_transform(item).toarray()

这将解决 Pandas 错误。

【讨论】:

这给出了一个错误 pandas DataFrame Constructor not proper called

以上是关于将 tf-idf 值添加为矩阵中的列的主要内容,如果未能解决你的问题,请参考以下文章

知识详解+Python实现|文本挖掘中的预处理方法

K- 表示为 tf-idf 矩阵定义初始中心

如何标准化 SVM 的 tf-idf 向量?

如何查看每个单词的 tf-idf 分数

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

为啥 adajcency 矩阵的特征值实际上是 Textrank 中的句子分数