7

Ich las über TfidfVectorizer implementation von Scikit-Learn, dont i was noch den Ausgang des Verfahrens, zum Beispiel verstehen:scikit-lernen TfidfVectorizer Bedeutung?

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

Ausgang:

{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.  ]] 

Was ist (? zB: 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} 

ist dies eine Matrix oder ein Vektor ?, ich kann nicht verstehen, was noch mir die Ausgabe zu sagen:

[[ 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.  ]] 

Kann mir jemand diese Ausgänge näher erklären?

Danke!

Antwort

7

TfidfVectorizer - Wandelt Text in Merkmalsvektoren um, die als Eingabe für den Schätzer verwendet werden können.

vocabulary_ Ist ein Wörterbuch, das jedes Token (Wort) in einen Feature-Index in der Matrix konvertiert, erhält jedes eindeutige Token einen Feature-Index.

Was ist? (Z .: u'me ': 8)

Es sagt Ihnen, dass das Token 'me' als Funktion der Nummer 8 in der Ausgangsmatrix dargestellt.

ist dies eine Matrix oder nur ein Vektor?

Jeder Satz ist ein Vektor, die Sätze, die Sie eingegeben haben, sind Matrix mit 3 Vektoren. In jedem Vektor stellen die Zahlen (Gewichte) die Merkmale tf-idf dar. Zum Beispiel: 'julie': 4 -> Sagt Ihnen, dass die in jedem Satz 'Julie' erscheinen Sie haben nicht-Null (tf-idf) Gewicht.

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

Das 5'th Element hat 0,51785612 - die: Wie Sie im 2'nd Vektor sehen tf-idf-Punktzahl für 'Julie'. Für weitere Informationen über Tf-Idf Scoring lesen Sie hier: http://en.wikipedia.org/wiki/Tf%E2%80%93idf

+0

Was ist der u-Parameter in der Ausgabe? Mit einem neuen Download von Anaconda/Scikit und es wird nicht angezeigt. Wird es jetzt nicht in der Ausgabe angezeigt? – BluePython

+0

FYI - es ist der Unterschied zwischen Unicode oder nicht (das ist in Versionen vor Python 3 angegeben). – BluePython

0

So tf-IDF erstellt eine Reihe von eigenen Vokabeln aus dem gesamten Satz von Dokumenten. Welches ist in der ersten Zeile der Ausgabe gesehen. (Zum besseren Verständnis habe ich es sortiert)

{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, } 

Und wenn das Dokument analysiert wird seinen tf-idf zu bekommen. Dokument:

Er sieht Basketball und Baseball

und seinen Ausgang

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

]

entspricht,

[baseball basketball er jane julie linda mag mich mehr liebt als]

Da unser Dokument nur diese Worte hat: Baseball, Basketball, er, von der Vokabular erstellt. Die Ausgabe des Dokumentenvektors hat Werte von tf-idf nur für diese drei Wörter und in der gleichen Position des sortierten Vokabulars.

tf-idf wird verwendet, um Dokumente zu klassifizieren, Ranking in der Suchmaschine. tf: Termhäufigkeit (Anzahl der im Dokument vorhandenen Wörter aus dem eigenen Vokabular), idf: Inverse Dokumenthäufigkeit (Bedeutung des Wortes für jedes Dokument).