Obtenga el nombre del documento en la matriz scikit-learn tf-idf

He creado una matriz tf-idf pero ahora quiero recuperar las 2 palabras principales para cada documento. Quiero pasar la identificación del documento y debería darme las 2 palabras principales.

En este momento, tengo estos datos de muestra:

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. ]]) 

Puedo acceder a la matriz dando el número de fila, por ejemplo.

  >>> t[0,1] 0.47107781233161794 

¿Hay alguna manera de poder acceder a esta matriz mediante la identificación del documento? En mi caso ‘doc1’ y ‘doc2’.

Gracias

Haciendo

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

se pierde cualquier enlace a las identificaciones del documento. Un dict no está ordenado, por lo que no tiene idea de qué valor se da en qué orden. Esto significa que antes de pasar los valores a la función fit_transform, debe registrar qué valor corresponde a qué id.

Por ejemplo, lo que puedes hacer es:

 counter = 0 values = [] key = {} for k,v in d.items(): values.append(v) key[k] = counter counter+=1 t = test_v.fit_transform(values) 

Desde allí puede crear una función para acceder a este matix mediante la identificación del documento:

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