use*_*721 4 python machine-learning matrix tf-idf scikit-learn
我创建了一个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访问这个matix:
def get_doc_row(docid):
    rowid = key[docid]
    row = t[rowid,:]
    return row
| 归档时间: | 
 | 
| 查看次数: | 2079 次 | 
| 最近记录: |