Я пытаюсь написать функцию на Python (все еще нуб!), Которая возвращает индексы и оценки документов, упорядоченные по внутренним продуктам их оценок tfidf.Процедура следующая:
idx
и всеми другими документами Код, который у меня есть на данный момент:
import h5py
import numpy as np
def get_related(tfidf, idx) :
''' return the top documents '''
# calculate inner product
v = np.inner(tfidf, tfidf[idx].transpose())
# sort
vs = np.sort(v.toarray(), axis=0)[::-1]
scores = vs[1:,]
# sort indices
vi = np.argsort(v.toarray(), axis=0)[::-1]
idxs = vi[1:,]
return (scores, idxs)
где tfidf
- это разреженная матрица типа '
.
Это кажется неэффективным, поскольку сортировка выполняется дважды ( sort ()
, затем argsort ()
), а затем результаты должны быть отменены.
toarray ()
?