Vecteurs d'attributs

Natural Language Processing (NLP) en Python

Fouad Trad

Machine Learning Engineer

Limites de BoW et TF-IDF

  • Traitent des mots similaires comme sans lien
  • Ne saisissent pas le sens du texte

 

Image montrant comment BoW/TF-IDF transforme un ensemble de textes en un ensemble structuré où les mots uniques sont des caractéristiques.

Natural Language Processing (NLP) en Python

Vecteurs d'attributs

Image montrant qu'un vecteur d'attributs transforme un mot en vecteur.

  • Représenter un mot par un vecteur qui en capte le sens
Natural Language Processing (NLP) en Python

Vecteurs d'attributs

Image montrant les vecteurs d'attributs de quatre mots : car, movie, film et king.

  • Représenter un mot par un vecteur qui en capte le sens
    • Attribue des valeurs aléatoires à chaque mot
Natural Language Processing (NLP) en Python

Vecteurs d'attributs

Image montrant une tâche de complétion : terminer « I enjoyed watching the » avec le bon mot.

  • Représenter un mot par un vecteur qui en capte le sens
    • Attribue des valeurs aléatoires à chaque mot
    • Affine les valeurs en prédisant les mots manquants dans des phrases
Natural Language Processing (NLP) en Python

Vecteurs d'attributs

Image montrant qu'on peut compléter la phrase avec deux mots de sens similaire : movie et film.

  • Représenter un mot par un vecteur qui en capte le sens
    • Attribue des valeurs aléatoires à chaque mot
    • Affine les valeurs en prédisant les mots manquants dans des phrases
    • Les mots dans des contextes similaires obtiennent des représentations similaires
Natural Language Processing (NLP) en Python

Vecteurs d'attributs : des coordonnées GPS pour les mots

Image montrant des emplacements GPS sur une carte.

Natural Language Processing (NLP) en Python

Gensim

  • Offre des modèles d'attributs populaires
    • Word2Vec
    • GloVe
word2vec-ruscorpora-300
word2vec-google-news-300
glove-wiki-gigaword-50
glove-wiki-gigaword-100
glove-wiki-gigaword-200
glove-wiki-gigaword-300
...

 

  Logo de Gensim.

Natural Language Processing (NLP) en Python

Charger un modèle d'attributs

import gensim.downloader as api

model = api.load('glove-wiki-gigaword-50')
print(type(model))
print(model['movie'])
<class 'gensim.models.keyedvectors.KeyedVectors'>

[ 0.30824 0.17223 -0.23339 0.023105 0.28522 0.23076 -0.41048 -1.0035 -0.2072 1.4327 -0.80684 0.68954 -0.43648 1.1069 1.6107 -0.31966 0.47744 0.79395 -0.84374 0.064509 0.90251 0.78609 0.29699 0.76057 0.433 -1.5032 -1.6423 0.30256 0.30771 -0.87057 2.4782 -0.025852 0.5013 -0.38593 -0.15633 0.45522 0.04901 -0.42599 -0.86402 -1.3076 -0.29576 1.209 -0.3127 -0.72462 -0.80801 0.082667 0.26738 -0.98177 -0.32147 0.99823 ]
Natural Language Processing (NLP) en Python

Calculer la similarité

similarity = model.similarity("film", "movie")

print(similarity)
0.9310100078582764
Natural Language Processing (NLP) en Python

Trouver les mots les plus similaires

similar_to_movie = model.most_similar('movie', topn=3)

print(similar_to_movie)
[('movies', 0.9322481155395508), 
 ('film', 0.9310100078582764), 
 ('films', 0.8937394618988037)]
Natural Language Processing (NLP) en Python

Visualiser les vecteurs d'attributs

  • Analyse en composantes principales (ACP) :
    • Vecteurs de grande dimension → vecteurs 2D ou 3D

Une carte 3D aplatie en 2D.

1 Image générée par DALL-E
Natural Language Processing (NLP) en Python

Visualiser avec l'ACP

from sklearn.decomposition import PCA

words = ["film", "movie", "dog", "cat", "car", "bus"]
word_vectors = [model[word] for word in words]
pca = PCA(n_components=2)
word_vectors_2d = pca.fit_transform(word_vectors)
plt.scatter(word_vectors_2d[:, 0], word_vectors_2d[:, 1])
for word, (x, y) in zip(words, word_vectors_2d): plt.annotate(word, (x, y))
plt.show()

Image montrant que des mots similaires ou liés sont proches dans l'espace d'attributs.

Natural Language Processing (NLP) en Python

Comparer des vecteurs d'attributs

Image montrant que des mots similaires/associés dans le modèle Word2Vec sont proches dans l'espace d'attributs, mais placés différemment du modèle GloVe.

word2vec-google-news-300

Image montrant que des mots similaires/associés dans le modèle GloVe sont proches dans l'espace d'attributs.

glove-wiki-gigaword-50
Natural Language Processing (NLP) en Python

Passons à la pratique !

Natural Language Processing (NLP) en Python

Preparing Video For Download...