web-dev-qa-db-ja.com

選択した機能名TFIDF Vectorizerを取得します

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マトリックスが必要です。どうすればこれを達成できますか?

11
Clock Slave

tfidf_vectorizer.get_feature_names() を使用できます。これにより、未加工のドキュメントから選択された機能名(選択された用語)が印刷されます。

_tfidf_vectorizer.vocabulary__属性を使用して、機能名をインデックスにマッピングするがソートされない辞書を取得することもできます。 get_feature_names()の配列はインデックスでソートされます。

16
Vivek Kumar

使用する tfidf_vectorizer.vocabulary_、これは特徴からのマッピングを提供します(用語はインデックスに戻ります)

5
orsonady