Data Science, Python, Economie ...

Accueil

Créer un vecteur TF de mots

Une fois la tokenisation et la lemmatisation du texte réalisée, on peut passer à son éventuelle vectorisation avant analyse de similaritéSimilarité
Le but des méthodes d'analyse de la similarité est de créer une mesure unique permettant de comparer des vecteurs entre eux.

Ces techniques trouvent leur utilité en complément des algorithmes de [[clustering]], pour faciliter leur fonctionnement et pour évaluer leurs résultats.

Similarité et distance de Jaccard

Soit deux sets de vecteurs. La Similarité de Jaccard (Jaccard Similarity - $J(s_1,s2)$) des sets $s_1$ et $s_2$ est définie selon le ratio entre l'intersection et l'union des élémen...
ou utilisation pour calculer un score TFIDF. Pour cela, on va simplement conter le nombre de mots dans le texte et reporter le résultat dans un vecteur dont chaque coordonnée correspondra à un mot.

L'enregistrement de la matrice TF

Si l'on analyse plusieurs textes (ce qui est généralement le cas), on aura alors une grande matrice, où chaque colonne correspondra à un mot et chaque ligne à un texte comparé. On l'appelle une matrice creuse compressée (Compressed Sparse Row - CSR).

Cela donne une matrice creuse (sparse matrix) où la plupart des éléments égaux à 0. Un exemple d'une telle matrice :

$$ \left(\begin{array}{cccccc} 10 & 20 & 0 & 0 & 0 & 0 \\ 0 & 30 & 0 & 40 & 0 & 0 \\ 0 & 0 & 50 & 60 & 70 & 0 \\ 0 & 0 & 0 & 0 & 0 & 80 \end{array}\right) $$

Le stockage se ferait au format longManipuler les formats longs et larges de données
Les données tabulaires peuvent se présenter sous deux aspects : "long" ou "large".

Définition

Format long

Dans le cas des données dites longues, chaque ligne correspond à un attribut d'une observation dont l'identifiant et la valeur associés sont situés dans une colonne à part. On a donc un grand nombre de lignes, égal à attributs*observations.

La structure est semblable à un dictionnaire, avec des paires clé/valeur emboitées. Elle est pratique lorsque l'on récolte des données dont on ne...
:

V         = [ 10 20 30 40 50 60 70 80 ]
COL_INDEX = [  0  1  1  3  2  3  4  5 ]   
ROW_INDEX = [  0  2  4  7  8 ]

Bien qu'il soit facile de créer une matrice TF pour ensuite la convertir au format CSR, sklearnsklearn
Scikit-Learn est une bibliothèque de code utilisée pour appliquer les principaux algorithmes de machine learning à des jeux de données.

Chaque technique correspond à un objet, sur lequel on peut agir en définissant les paramètres de départ, en l'appliquant à des données et en utilisant le modèle ainsi construit pour prédire de nouvelles données.

Le glossaire

Principes de modélisation

Les étapes de construction d'un modèle sont les suivantes :



Définition du modèle : c'est le momen...
s'en charge pour nous, avec la classe CounVectorizerdu module sklearn.feature_extraction.text :

Importation :

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()

Utilisation1 :

tf_matrix = vectorizer.fit_transform(newsgroups.data)
print(tf_matrix)

> (0, 108644)       4
(0, 110106)     1
(0, 57577)      2
(0, 24398)      2
(0, 79534)      1
(0, 100942)     1
(0, 37154)      1
(0, 45141)      1
(0, 70570)      1
(0, 78701)      2
(0, 101084)     4
(0, 32499)      4
(0, 92157)      1
(0, 100827)     6
(0, 79461)      1
(0, 39275)      1
(0, 60326)      2
(0, 42332)      1
(0, 96432)      1
(0, 67137)      1
(0, 101732)     1
(0, 27703)      1
(0, 49871)      2
(0, 65338)      1
(0, 14106)      1
:       :
(11313, 55901)  1
(11313, 93448)  1
...
print(type(tf_matrix))

> <class 'scipy.sparse.csr.csr_matrix'>

On voit que sklearn renvoie un objet de type csr_matrix, qui correspond à une matrice creuse. Il est recommandé, pour éviter les problèmes de compatibilité, de la convertir au format array :

tf_np_matrix = tf_matrix.toarray()
print(tf_np_matrix)

> [ [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0] ]
  1. Exemple tiré de Data Science Bookcamp, de Leonard Apelstin, utilisant le newsgroup dataset (from sklearn.datasets import fetch_20newsgroups