7

Stavo leggendo su TfidfVectorizer implementation di scikit-learn, Io non capisco cosa consigliarvi l'uscita del metodo, ad esempio:scikit-learn TfidfVectorizer significato?

new_docs = ['He watches basketball and baseball', 'Julie likes to play basketball', 'Jane loves to play baseball'] 
new_term_freq_matrix = tfidf_vectorizer.transform(new_docs) 
print tfidf_vectorizer.vocabulary_ 
print new_term_freq_matrix.todense() 

uscita:

{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2} 
[[ 0.57735027 0.57735027 0.57735027 0.   0.   0.   0. 
    0.   0.   0.   0.  ] 
[ 0.   0.68091856 0.   0.   0.51785612 0.51785612 
    0.   0.   0.   0.   0.  ] 
[ 0.62276601 0.   0.   0.62276601 0.   0.   0. 
    0.4736296 0.   0.   0.  ]] 

Che cosa è (? es: u'me ': 8):

{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2} 

è presente una matrice o semplicemente un vettore ?, non posso comprendere sempre cosa dicendomi dell'uscita:

[[ 0.57735027 0.57735027 0.57735027 0.   0.   0.   0. 
    0.   0.   0.   0.  ] 
[ 0.   0.68091856 0.   0.   0.51785612 0.51785612 
    0.   0.   0.   0.   0.  ] 
[ 0.62276601 0.   0.   0.62276601 0.   0.   0. 
    0.4736296 0.   0.   0.  ]] 

Qualcuno potrebbe spiegarmi più dettagliatamente queste uscite?

Grazie!

risposta

7

TfidfVectorizer - Trasforma il testo in vettori di caratteristiche che possono essere utilizzati come input per lo stimatore.

vocabulary_ È un dizionario che converte ciascun token (parola) in indice di caratteristiche nella matrice, ogni token univoco ottiene un indice di funzionalità.

Che cos'è? (Es .: u'me ': 8)

ti dice che il token 'me' è rappresentato come caratteristica numero 8 nella matrice di uscita.

è una matrice o solo un vettore?

Ogni frase è un vettore, le frasi che hai inserito sono a matrice con 3 vettori. In ogni vettore i numeri (pesi) rappresentano le caratteristiche tf-idf punteggio. Ad esempio: 'julie': 4 -> Ti dice che in ogni frase 'Julie' appare che avrai un peso diverso da zero (tf-idf). Come si può vedere nel vettore 2'nd:

[0. 0,68091856 0. 0. 0,51785612 0,51785612 0. 0. 0. 0. 0.]

L'elemento 5'th segnato 0,51,785612 millions - il Punteggio tf-idf per 'Julie'. Per ulteriori informazioni sul punteggio Tf-Idf leggi qui: http://en.wikipedia.org/wiki/Tf%E2%80%93idf

+0

qual è il parametro u nell'output? Usando un nuovo download di Anaconda/Scikit e non viene mostrato. Ora non è visualizzato nell'output? – BluePython

+0

FYI - è la differenza tra unicode o no (che è specificato nelle versioni precedenti a Python 3). – BluePython

0

Quindi tf-idf crea un set di un proprio vocabolario dall'intero set di documenti. Che è visto nella prima riga di output. (Per una migliore comprensione ho ordinato che)

{u'baseball': 0, u'basketball': 1, u'he': 2, u'jane': 3, u'julie': 4, u'likes': 5, u'linda': 6, u'loves': 7, u'me': 8, u'more': 9, u'than': 10, } 

E quando il documento viene analizzato per ottenere il suo TF-IDF. Documento:

Osserva il basket e il baseball

e la sua uscita,

[0,57735027 0,57735027 0,57735027 0. 0. 0. 0. 0. 0. 0. 0.]

è equivalente a,

[baseball pallacanestro ha jane Julie piace Linda mi ama più di]

Dato che il nostro documento ha solo queste parole: baseball, basket, lui, dal vocabolario creato. L'output del vettore di documenti ha valori di tf-idf solo per queste tre parole e nella stessa posizione di vocabolario ordinato.

tf-idf viene utilizzato per classificare i documenti, classifica nel motore di ricerca. tf: frequenza dei termini (conteggio delle parole presenti nel documento dal proprio vocabolario), idf: frequenza del documento inverso (importanza della parola per ciascun documento).