Если у вас есть глубокий взгляд на этот вопрос, они заинтересованы в знании лучших tf_idf
баллов для одного документа.
когда вы хотите сделать то же самое для большого корпуса, вам необходимо суммировать баллы каждой функции по всем документам (но это не имеет смысла, поскольку баллы l2
нормализованы в TfidfVectorizer()
, читайте здесь ). Я бы порекомендовал использовать .idf_
баллов, чтобы узнать особенности с высокой частотой инверсий документов.
В случае, если вы хотите узнать основные функции, основанные на количестве вхождений, используйте CountVectorizer()
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
corpus = [
'I would like to check this document',
'How about one more document',
'Aim is to capture the key words from the corpus'
]
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(corpus)
feature_array = vectorizer.get_feature_names()
top_n = 3
print('tf_idf scores: \n', sorted(list(zip(vectorizer.get_feature_names(),
X.sum(0).getA1())),
key=lambda x: x[1], reverse=True)[:top_n])
# tf_idf scores :
# [('document', 1.4736296010332683), ('check', 0.6227660078332259), ('like', 0.6227660078332259)]
print('idf values: \n', sorted(list(zip(feature_array,vectorizer.idf_,)),
key = lambda x: x[1], reverse=True)[:top_n])
# idf values:
# [('aim', 1.6931471805599454), ('capture', 1.6931471805599454), ('check', 1.6931471805599454)]
vectorizer = CountVectorizer(stop_words='english')
X = vectorizer.fit_transform(corpus)
feature_array = vectorizer.get_feature_names()
print('Frequency: \n', sorted(list(zip(vectorizer.get_feature_names(),
X.sum(0).getA1())),
key=lambda x: x[1], reverse=True)[:top_n])
# Frequency:
# [('document', 2), ('aim', 1), ('capture', 1)]