pythonを使用しており、大量のデータのTFIDF表現を取得したいので、次のコードを使用してドキュメントをTFIDF形式に変換しています。
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(
min_df=1, # min count for relevant vocabulary
max_features=4000, # maximum number of features
strip_accents='unicode', # replace all accented unicode char
# by their corresponding ASCII char
analyzer='Word', # features made of words
token_pattern=r'\w{1,}', # tokenize only words of 4+ chars
ngram_range=(1, 1), # features made of a single tokens
use_idf=True, # enable inverse-document-frequency reweighting
smooth_idf=True, # prevents zero division for unseen words
sublinear_tf=False)
tfidf_df = tfidf_vectorizer.fit_transform(df['text'])
ここでは、パラメータmax_features
を渡します。ベクトライザーは最適な機能を選択し、scipyのスパース行列を返します。問題は、どの機能が選択されているのかわからず、それらの機能名をどのように私が取得したscipyマトリックスにマッピングし直すのですか?基本的に、n
個のドキュメントから選択されたm
フィーチャについて、整数IDの代わりに列名として選択されたフィーチャを含むm x n
マトリックスが必要です。どうすればこれを達成できますか?
tfidf_vectorizer.get_feature_names()
を使用できます。これにより、未加工のドキュメントから選択された機能名(選択された用語)が印刷されます。
_tfidf_vectorizer.vocabulary_
_属性を使用して、機能名をインデックスにマッピングするがソートされない辞書を取得することもできます。 get_feature_names()
の配列はインデックスでソートされます。
使用する tfidf_vectorizer.vocabulary_
、これは特徴からのマッピングを提供します(用語はインデックスに戻ります)