gpt4 book ai didi

Python - 使用 TF-IDF 汇总数据框文本列

转载 作者:行者123 更新时间:2023-12-04 07:21:34 25 4
gpt4 key购买 nike

我有一个包含文本的列的数据框。
我想创建一个新列,其中包含每行中前 'n' 个 TF-IDF 评分词的元组/列表,作为总结文本内容的一种方式。
一个示例数据帧(大量简洁)是:

df = pd.DataFrame({'Ref': [1,2,3,4,5], 'Text': ["the cow jumped off the other cow", 
"the fox had a fox",
"the spanner was a tool to tool",
"the football player played football",
"the house had a house"]})
过去几天我一直在试图找到解决方案,但我只能找到可以找到整个语料库的顶级 TF-IDF 单词的示例,而不是基于整个语料库的数据帧中的每一行。
任何人都可以引导我朝着正确的方向前进吗?

最佳答案

这是一个可能的解决方案:

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

n = 3 # top n TF-IDF words

tfidf = TfidfVectorizer(token_pattern=r"\w+") # no words are left out
X = tfidf.fit_transform(df['Text'])
ind = (-X.todense()).argpartition(n)[:, :n]
top_words = pd.Series(
map(
lambda words_values: dict(zip(*words_values)),
zip(
np.array(tfidf.get_feature_names())[ind],
np.asarray(np.take_along_axis(X, ind, axis=1).todense()),
),
),
)
结果如下:
>>> top_words
0 {'cow': 0.7111977362687212, 'other': 0.3555988681343606, 'off': 0.3555988681343606}
1 {'fox': 0.8665817814049075, 'had': 0.34957636239744133, 'a': 0.2901799593148741}
2 {'tool': 0.7218960199361867, 'was': 0.36094800996809334, 'spanner': 0.36094800996809334}
3 {'football': 0.8014723840888909, 'player': 0.40073619204444544, 'played': 0.40073619204444544}
4 {'house': 0.8665817814049075, 'had': 0.34957636239744133, 'a': 0.2901799593148741}

关于Python - 使用 TF-IDF 汇总数据框文本列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68459166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com