2017-04-03 19 views
0

如何使用TfidfVectorizer函數知道特定單詞的值? 例如,我的代碼是:如何知道單詞的特定TF-IDF值?

docs = [] 
docs.append("this is sentence number one") 
docs.append("this is sentence number two") 
vectorizer = TfidfVectorizer(norm='l2',min_df=0, use_idf=True, smooth_idf=True, stop_words='english', sublinear_tf=True) 
sklearn_representation = vectorizer.fit_transform(docs) 

現在,我怎麼能知道 「句子」 的句子2的TF-IDF值(文檔[1])?

回答

0

您需要使用vectorizervocabulary_屬性,該屬性是項與特徵索引的映射。

>>> from sklearn.feature_extraction.text import TfidfVectorizer 
>>> docs = [] 
>>> docs.append("this is sentence number one") 
>>> docs.append("this is sentence number two") 
>>> vectorizer = TfidfVectorizer(norm='l2',min_df=0, use_idf=True, smooth_idf=True, stop_words='english', sublinear_tf=True) 
>>> x = vectorizer.fit_transform(docs) 
>>> x.todense() 
matrix([[ 0.70710678, 0.70710678], 
     [ 0.70710678, 0.70710678]]) 
>>> vectorizer.vocabulary_['sentence'] 
1 
>>> c = vectorizer.vocabulary_['sentence'] 
>>> x[:,c] 
<2x1 sparse matrix of type '<class 'numpy.float64'>' 
    with 2 stored elements in Compressed Sparse Row format> 
>>> x[:,c].todense() 
matrix([[ 0.70710678], 
     [ 0.70710678]]) 
+0

vectorizer.vocabulary _ ['sentence']'做了什麼? 以及如何獲得一個值?只有特定文檔中該單詞的TF-IDF值 – Skinish

+0

@Skinish正如我所解釋的那樣,「vocabulary_'屬性是用於特徵索引的術語的映射(即」詞典「)。在您的X矩陣中,列對應於要素和文檔的行。你有這個專欄,所以如果你只需要一行,就選擇你對應的行。 'x [:,c]'選擇*所有*行。例如,如果你想要第一個,你可以做'x [0,c]' –

+0

好極了!非常感謝! – Skinish

相關問題