選択された機能名を取得する TFIDF ベクトル化 質問する

選択された機能名を取得する TFIDF ベクトル化 質問する

私は 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。どうすればこれを実現できますか?

ベストアンサー1

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

attributeを使用して、機能名をそのインデックスにマッピングする辞書を取得することもできますtfidf_vectorizer.vocabulary_が、ソートされません。配列はget_feature_names()インデックスによってソートされます。

おすすめ記事