gpt4 book ai didi

python - 获取 scikit-learn tf-idf 矩阵中的文档名称

转载 作者:太空狗 更新时间:2023-10-30 02:19:59 27 4
gpt4 key购买 nike

我已经创建了一个 tf-idf 矩阵,但现在我想检索每个文档的前 2 个词。我想传递文档 ID,它应该给我前 2 个词。

现在,我有这个示例数据:

from sklearn.feature_extraction.text import TfidfVectorizer

d = {'doc1':"this is the first document",'doc2':"it is a sunny day"} ### corpus

test_v = TfidfVectorizer(min_df=1) ### applied the model
t = test_v.fit_transform(d.values())
feature_names = test_v.get_feature_names() ### list of words/terms

>>> feature_names
['day', 'document', 'first', 'is', 'it', 'sunny', 'the', 'this']

>>> t.toarray()
array([[ 0. , 0.47107781, 0.47107781, 0.33517574, 0. ,
0. , 0.47107781, 0.47107781],
[ 0.53404633, 0. , 0. , 0.37997836, 0.53404633,
0.53404633, 0. , 0. ]])

我可以通过给出行号来访问矩阵,例如。

 >>> t[0,1]
0.47107781233161794

有没有一种方法可以通过文档 ID 访问此矩阵?在我的例子中是“doc1”和“doc2”。

谢谢

最佳答案

通过做

t = test_v.fit_transform(d.values())

您丢失了所有指向文档 ID 的链接。字典没有排序,所以你不知道哪个值是按哪个顺序给出的。这意味着在将值传递给 fit_transform 函数之前,您需要记录哪个值对应于哪个 id。

例如你可以做的是:

counter = 0
values = []
key = {}


for k,v in d.items():
values.append(v)
key[k] = counter
counter+=1

t = test_v.fit_transform(values)

从那里你可以构建一个函数来通过文档 ID 访问这个矩阵:

def get_doc_row(docid):
rowid = key[docid]
row = t[rowid,:]
return row

关于python - 获取 scikit-learn tf-idf 矩阵中的文档名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26304191/

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