복붙노트

[PYTHON] sklearn : TFIDF Transformer : 문서에서 주어진 단어의 tf-idf 값을 얻는 법

PYTHON

sklearn : TFIDF Transformer : 문서에서 주어진 단어의 tf-idf 값을 얻는 법

나는 명령을 사용하여 문서의 용어에 대한 TFIDF 값을 계산할 때 sklean을 사용했다.

from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(documents)
from sklearn.feature_extraction.text import TfidfTransformer
tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
X_train_tf = tf_transformer.transform(X_train_counts)

X_train_tf는 scipy 스파 스 매트릭스 형태입니다.

X_train_tf.shape

(2257, 35788)과 같이 출력됩니다. 필통 문서에서 단어에 대해 TF-IDF를 얻으려면 어떻게해야합니까? 더 구체적으로, 주어진 문서에서 최대 TF-IDF 값을 가진 단어를 얻는 방법?

해결법

  1. ==============================

    1.sklearn의 TfidfVectorizer를 사용할 수 있습니다.

    sklearn의 TfidfVectorizer를 사용할 수 있습니다.

    from sklearn.feature_extraction.text import TfidfVectorizer
    import numpy as np
    from scipy.sparse.csr import csr_matrix #need this if you want to save tfidf_matrix
    
    tf = TfidfVectorizer(input='filename', analyzer='word', ngram_range=(1,6),
                         min_df = 0, stop_words = 'english', sublinear_tf=True)
    tfidf_matrix =  tf.fit_transform(corpus)
    

    위의 tfidf_matix는 코퍼스에있는 모든 문서의 TF-IDF 값을가집니다. 이것은 큰 희소 행렬입니다. 지금,

    feature_names = tf.get_feature_names()
    

    이것은 모든 토큰 또는 n-gram이나 단어 목록을 제공합니다. 귀하의 코퍼스에있는 첫 번째 문서의 경우,

    doc = 0
    feature_index = tfidf_matrix[doc,:].nonzero()[1]
    tfidf_scores = zip(feature_index, [tfidf_matrix[doc, x] for x in feature_index])
    

    그 (것)들을 인쇄하게하십시오,

    for w, s in [(feature_names[i], s) for (i, s) in tfidf_scores]:
      print w, s
    
  2. from https://stackoverflow.com/questions/34449127/sklearn-tfidf-transformer-how-to-get-tf-idf-values-of-given-words-in-documen by cc-by-sa and MIT license