SklearnのTfidfVectorizerオブジェクトを使用して、1つのドキュメントのtf-idfベクトルを取得しようとしています。いくつかのトレーニングドキュメントに基づいて語彙を作成し、fit_transformを使用してTfidfVectorizerをトレーニングします。次に、特定のテストドキュメントのtf-idfベクトルを検索します。
from sklearn.feature_extraction.text import TfidfVectorizer
self.vocabulary = "a list of words I want to look for in the documents".split()
self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='Word',
stop_words='english')
self.vect.fit_transform(self.vocabulary)
...
doc = "some string I want to get tf-idf vector for"
tfidf = self.vect.transform(doc)
問題は、これがn行の行列を返すことです。ここで、nはdoc文字列のサイズです。文字列全体のtf-idfを表す単一のベクトルのみを返します。各文字を文書としてではなく、文字列を単一の文書として表示するにはどうすればよいですか?また、テキストマイニングは非常に新しいので、概念的に何か間違ったことをしている場合は、知っておくとよいでしょう。どんな助けも大歓迎です。
特定の語彙についてのみtf-idfを計算する場合は、vocabulary
引数をTfidfVectorizer
コンストラクターに使用します。
vocabulary = "a list of words I want to look for in the documents".split()
vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='Word',
stop_words='english', vocabulary=vocabulary)
次に、特定のcorpus
、つまりドキュメントの反復可能値に合わせて、つまりカウントを計算するには、fit
を使用します。
vect.fit(corpus)
方法 fit_transform
は、
vect.fit(corpus)
corpus_tf_idf = vect.transform(corpus)
最後に、transform
メソッドはコーパスを受け入れます。そのため、単一のドキュメントの場合、リストとして渡すか、各シンボルがドキュメントであるシンボルの反復可能として扱われる必要があります。
doc_tfidf = vect.transform([doc])