web-dev-qa-db-fra.com

scikit-learn TfidfVectorizer signifie?

Je lisais à propos de TfidfVectorizer implementation de scikit-learn, je ne comprends pas quel est le résultat de la méthode, par exemple:

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

sortie:

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

Qu'est-ce que c'est (exemple: 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}

est-ce une matrice ou juste un vecteur? Je ne peux pas comprendre ce que me dit le résultat:

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

Quelqu'un pourrait-il m'expliquer plus en détail ces résultats?

Merci!

15
anon

TfidfVectorizer - Transforme le texte en vecteurs d'entités pouvant être utilisés comme entrée pour l'estimateur.

vocabulary_ Est un dictionnaire qui convertit chaque jeton (Word) en index d'entité dans la matrice, chaque jeton unique obtenant un index d'entité.

Qu'est-ce que c'est? (Exemple: u'me ': 8)

Il vous indique que le jeton "moi" est représenté par le numéro de fonctionnalité 8 dans la matrice de sortie.

est-ce une matrice ou juste un vecteur?

Chaque phrase est un vecteur, les phrases que vous avez entrées sont une matrice à 3 vecteurs. Dans chaque vecteur, les nombres (poids) représentent les caractéristiques du score tf-idf. Par exemple: 'julie': 4 -> Vous indique que dans chaque phrase, 'Julie' apparaît, vous aurez un poids non nul (tf-idf). Comme vous pouvez le voir dans le 2 ème vecteur:

[0. 0.68091856 0. 0. 0.51785612 0.51785612 0. 0. 0. 0. 0.]

Le 5ème élément a obtenu un score de 0.51785612 - le score tf-idf de 'Julie'. Pour plus d'informations sur la notation Tf-Idf, veuillez consulter le lien suivant: http://en.wikipedia.org/wiki/Tf%E2%80%93idf

13
D Volsky

Donc, tf-idf crée un ensemble de son propre vocabulaire à partir de l’ensemble des documents. Ce qui est vu en première ligne de sortie. (pour mieux comprendre je l'ai trié)

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

Et quand le document est analysé pour obtenir son tf-idf. Document:

Il regarde le basketball et le baseball

et sa sortie,

[0.57735027 0.57735027 0.57735027 0. 0. 0. 0. 0. 0. 0. 0.]

est équivalent à,

[baseball basketball il jane julie aime linda m'aime plus que]

Depuis notre document n'a que ces mots: baseball, basketball, lui, à partir du vocabulaire créé. La sortie de vecteur de document a des valeurs de tf-idf pour seulement ces trois mots et dans la même position de vocabulaire trié.

tf-idf est utilisé pour classer les documents, le classement dans le moteur de recherche. tf: fréquence de terme (nombre de mots présents dans le document à partir de son propre vocabulaire), idf: fréquence de document inverse (importance du mot pour chaque document).

4
Rajesh Mappu

La méthode prend en compte le fait que tous les mots ne doivent pas être pondérés de manière égale, en utilisant les poids pour indiquer les mots qui sont les plus uniques du document et le mieux utilisé pour le caractériser.

new_docs = ['basketball baseball', 'basketball baseball', 'basketball baseball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense()))


{'basketball': 1, 'baseball': 0}
    [[ 0.70710678  0.70710678]
     [ 0.70710678  0.70710678]
     [ 0.70710678  0.70710678]]

new_docs = ['basketball baseball', 'basketball basketball', 'basketball basketball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense()))

{'basketball': 1, 'baseball': 0}
    [[ 0.861037    0.50854232]
     [ 0.          1.        ]
     [ 0.          1.        ]] 

new_docs = ['basketball basketball baseball', 'basketball basketball', 'basketball 
basketball']
new_term_freq_matrix = vectorizer.fit_transform(new_docs)
print (vectorizer.vocabulary_)
print ((new_term_freq_matrix.todense())) 


{'basketball': 1, 'baseball': 0}
[[ 0.64612892  0.76322829]
[ 0.          1.        ]
[ 0.          1.        ]]
0
David Miller