2017-03-01 61 views
3

我正在使用python,我想要獲取大型數據庫語料庫的TFIDF表示,我正在使用以下代碼將文檔轉換爲其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矩陣?基本上對於m文檔中的n選定的特徵,我想要一個m x n矩陣,其中所選特徵作爲列名而不是它們的整數ID。我該如何做到這一點?

回答

7

您可以使用tfidf_vectorizer.get_feature_names()。這將打印從原始文檔中選擇的特徵名稱(選擇條款)。

您也可以使用tfidf_vectorizer.vocabulary_屬性來獲取將特徵名稱映射到其索引的字典,但不會被排序。 get_feature_names()的數組將按索引排序。

+0

'詞彙_'屬性用於向量化器而不是變換矩陣。 –

+1

是的,這是一個錯字。 –

3

使用tfidf_vectorizer.vocabulary_,這給從功能的映射(術語回索引)

+0

'tfidf_df.vocabulary_'給我一個屬性錯誤。不過,我可以使用'tfidf_vectorizer.vocabulary_'獲得這些功能,這是您的意思嗎? –

+2

是的。 tfidf_vectorizer –

+0

是的,我編輯,以反映改變,但它看起來使用'get_feature_names()'是一個更好的解決方案。 – putonspectacles