Word2Vec transforme chaque mot en une liste de nombres, apprise en observant ses voisins dans des milliers de phrases. Deux mots employés dans les mêmes contextes reçoivent des vecteurs proches. Publié par Google en 2013, c'est l'ancêtre direct des embeddings utilisés aujourd'hui par les LLM et les moteurs de recherche.
Dites-moi qui sont vos voisins, je vous dirai qui vous êtes. Un mot qui apparaît toujours près de « colis », « livré » et « délai » parle sûrement de logistique.
Pour chaque mot, on regarde les quelques mots qui l'entourent. Chaque couple (mot, voisin) devient un exemple d'apprentissage.
En version skip-gram, le réseau reçoit un mot et doit prédire ses voisins. En version CBOW, il reçoit les voisins et doit deviner le mot. Aucune étiquette n'est nécessaire : le texte suffit.
Une fois entraîné, le réseau ne sert plus. On conserve sa couche interne : un vecteur de 50 à 300 nombres par mot. Des mots proches par l'usage ont des vecteurs proches.
Aucune étiquette : Word2Vec apprend seul à partir de l'ordre des mots dans les avis.
Pour « livraison », « remboursement » ou « qualité », le modèle liste les mots employés dans les mêmes contextes. L'équipe qualité s'en sert pour enrichir ses listes de mots-clés et ses règles de tri. Sur un corpus aussi petit et répétitif que ce jeu d'exemple, les voisins reflètent surtout les mots qui apparaissent dans les mêmes phrases, pas de vrais synonymes.
Il n'y a pas de bonne réponse unique. On vérifie qu'un échantillon de voisins a du sens pour le métier, puis on mesure le gain sur une tâche réelle : recherche, classification, détection de doublons.
Noms donnés pour R (word2vec) et Python (gensim).
La taille des vecteurs. 100 à 300 sur un gros corpus, 50 suffit sur quelques milliers de phrases. Trop grand sur peu de texte, le modèle apprend du bruit.
La largeur de la fenêtre de voisins. Petite (2 à 5) : les voisins sont plutôt des mots de même fonction. Grande (10 et plus) : plutôt des mots du même sujet.
Les mots vus moins de min_count fois sont ignorés. Évite d'apprendre des vecteurs sur des fautes de frappe.
skip-gram (sg=1) donne en général de meilleurs vecteurs pour les mots rares ; CBOW (sg=0, défaut de gensim) est plus rapide sur de gros volumes.
# Vocabulaire des avis clients : Word2Vec en R
library(word2vec)
avis <- read.csv("avis_clients.csv")
textes <- tolower(avis$texte)
# Skip-gram : chaque mot apprend à prédire ses voisins dans une fenêtre de 3 mots
set.seed(42)
modele <- word2vec(x = textes, type = "skip-gram", dim = 50, window = 3,
iter = 50, min_count = 5, threads = 1)
vecteurs <- as.matrix(modele)
cat("Vocabulaire :", nrow(vecteurs), "mots, vecteurs de", ncol(vecteurs), "dimensions\n")
# Les mots les plus proches par similarité cosinus
print(predict(modele, c("livraison", "remboursement", "qualité"), type = "nearest", top_n = 4))
# Comparer deux mots
print(word2vec_similarity(vecteurs["rapide", , drop = FALSE], vecteurs["retard", , drop = FALSE], type = "cosine"))
# Vocabulaire des avis clients : Word2Vec en Python
import re
import pandas as pd
from gensim.models import Word2Vec
avis = pd.read_csv("avis_clients.csv")
# Une liste de mots par avis, en minuscules
phrases = [re.findall(r"\w+", texte.lower()) for texte in avis["texte"]]
# Skip-gram : chaque mot apprend à prédire ses voisins dans une fenêtre de 3 mots
modele = Word2Vec(phrases, vector_size=50, window=3, min_count=5, sg=1, epochs=50, seed=42, workers=1)
print("Vocabulaire :", len(modele.wv), "mots, vecteurs de", modele.wv.vector_size, "dimensions")
# Les mots les plus proches par similarité cosinus
for mot in ["livraison", "remboursement", "qualité"]:
print(mot, "->", [(voisin, round(score, 2)) for voisin, score in modele.wv.most_similar(mot, topn=4)])
# Comparer deux mots
print("rapide / retard :", round(float(modele.wv.similarity("rapide", "retard")), 2))
Sur des vecteurs appris sur des milliards de mots, les écarts entre vecteurs capturent des relations : l'écart entre « homme » et « femme » ressemble à celui entre « roi » et « reine ». Le calcul roi - homme + femme donne un vecteur dont le plus proche voisin, hors mots de départ, est « reine ». Cela reste approximatif et ne marche pas pour toutes les relations.
Skip-gram prédit les voisins à partir du mot et représente mieux les mots rares. CBOW prédit le mot à partir de ses voisins et s'entraîne plus vite. Sur un petit corpus métier, skip-gram est souvent le meilleur choix.
Pour comprendre des phrases, oui : les embeddings issus de Transformers tiennent compte du contexte. Word2Vec reste utile pour un vocabulaire métier très spécifique, un budget de calcul minimal, ou pour représenter des séquences non textuelles comme des produits achetés ensemble.
Des vecteurs de phrases ou de documents, appris par des Transformers. Ils tiennent compte du contexte de chaque mot.
Voir la fiche → l'approche par comptageChaque mot est une colonne indépendante : aucune notion de proximité entre « colis » et « paquet ». Plus simple, plus lisible.
Voir la fiche → des vecteurs contextuelsLe même mot reçoit un vecteur différent selon la phrase. Règle le problème des mots à plusieurs sens.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus