2017-04-03 2 views
0

Wie kann ich den Wert eines bestimmten Wortes mithilfe der TfidfVectorizer-Funktion ermitteln? Zum Beispiel ist mein Code:Wie kann man den spezifischen TF-IDF-Wert eines Wortes erkennen?

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) 

Nun, wie kann ich den TF-IDF-Wert von "Satz" kenne den Satz 2 (docs [1])?

Antwort

0

Sie müssen das vectorizervocabulary_ Attribut verwenden, das eine Zuordnung von Begriffen zu Feature-Indizes ist.

>>> 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

Was hat 'vectorizer.vocabulary _ ['sentence']' tun? und wie kann ich nur einen Wert bekommen? nur der TF-IDF-Wert für dieses Wort in einem bestimmten Dokument – Skinish

+0

@Skinish Wie ich erklärte, ist das "vokabular_" -Attribut eine Zuordnung (d. h. ein "dict") von Termen zu Merkmalsindizes. In Ihrer X-Matrix entsprechen die Spalten den Features und Zeilen den Dokumenten. Sie haben die Spalte, also wählen Sie Ihre entsprechende Zeile, wenn Sie nur 1 Zeile möchten. 'x [:, c]' wählt * alle * Zeilen. Wenn du das erste willst, zum Beispiel, hättest du 'x [0, c]' –

+0

Großartig machen können! Danke vielmals! – Skinish

Verwandte Themen