Pollen, éclosion, bourgeon, pistil sont des réponses possibles.
Dans cet article, nous allons explorer un algorithme capable de répondre à ce type d’analogie : fleur + œuf = ?
Bien sûr, on pourrait imaginer utiliser notre graphe sémantique pour tenter une réponse. On chercherait tous les mots liés à fleur, puis parmi eux ceux également liés à œuf. Et, dans ce cas simple… ça fonctionne.
Mais essayez plutôt avec : nébuleuse + tuyauterie = ?
Là, le graphe ne renvoie probablement rien, aucun mot ne relie directement ces deux concepts.
Word2Vec
Word2Vec est un outil introduit en 2013 par une équipe de Google Research. Son objectif : donner une représentation mathématique aux relations sémantiques entre les mots.
Pour faire simple, on peut voir cet algorithme comme une boîte noire : on lui fournit du texte en entrée (beaucoup de texte, ce qu’on appelle un corpus), il “digère” tout ça, et nous renvoie, en sortie… des vecteurs de mots.
Comme son nom l’indique : Word -> Vector.
Concrètement, pour chaque mot apparaissant dans le corpus, l’algorithme calcule un vecteur : autrement dit, des coordonnées dans un espace (généralement entre 25 et 1000 dimensions). Ces vecteurs reflètent les proximités sémantiques entre mots. Deux mots proches dans l’espace auront des sens similaires.
![]() |
Visualisation du modèle Word2Vec entraîné sur Lexiflaire. Elle a été réalisée à l’aide de Embedding Projector, un outil proposé par TensorFlow pour explorer les représentations vectorielles de mots. |
Ce que Word2Vec apporte
Prenons deux mots : panthère et guépard.
Imaginons qu’ils ne soient jamais liés dans notre graphe sémantique, c’est-à-dire qu’ils n’apparaissent jamais dans les mêmes parties de Lexiflaire.
Dans ce cas, aucun lien ne les relie dans le graphe. Pourtant, leur proximité sémantique est évidente.
Avec Word2Vec, même si ces deux mots n'ont jamais été utilisés ensemble, leur distance géométrique sera faible, c’est-à-dire qu’ils seront proches dans l’espace vectoriel.
Mais comment est-ce possible ?
Parce que Word2Vec ne regarde pas uniquement les mots eux-mêmes, mais aussi leur contexte d’apparition.
Un contexte, c’est simplement les mots qui entourent un mot donné dans une phrase du corpus.
Exemple :
“La panthère est un félin vivant dans la savane.”
Une fois lemmatisé et nettoyé (on retire les déterminants, les auxiliaires, etc.), on obtient un contexte pour panthère :
"félin", "vivre", "savane"
Autre exemple :
“Le guépard est un félin très rapide.”
Contexte pour guépard :
"félin", "rapide"
Même s’ils n’apparaissent jamais ensemble, leurs contextes sont similaires.
Et Word2Vec apprend justement à rapprocher dans l’espace vectoriel les mots qui partagent des contextes similaires.
C’est toute la force de cet outil : créer des liens implicites, là où un graphe est fondé uniquement sur les cooccurrences.
Un outil largement utilisé
Dans le monde du traitement automatique du langage (NLP), Word2Vec est devenu un outil de base.
Il est utilisé dans une multitude de tâches : classification de texte, recherche d’information, détection de similarités, recommandation, clustering thématique, etc.
La plupart du temps, on ne l’entraîne pas soi-même.
On utilise un modèle pré-entraîné sur un très grand corpus (comme Wikipedia, Google News ou Common Crawl).
Ces modèles pré-entraînés sont performants pour de nombreuses tâches.
Mais pourquoi ne pas tenter d’en entraîner un à partir des parties de Lexiflaire ?
J’avoue que je ne m’attendais pas à grand-chose : les données de Lexiflaire représentent environ 1 Go de texte, contre plusieurs téraoctets pour Wikipedia en français…
Seul point fort : avec un corpus de cette taille, nul besoin d’un supercalculateur pour entraîner le modèle.
Entraînement du modèle
Dans le cas de Wikipedia, le corpus est généralement découpé en phrases, avec une fenêtre glissante autour de chaque mot.
Pour Lexiflaire, chaque paire indice/réponse formera une phrase indépendante (comme pour le graphe). Les contextes générés seront donc courts, directs et très spécifiques :
"panthère félin", "pétale fleur", etc.
On va simplement prendre chacune de ces “phrases” et en mettre une par ligne dans un fichier texte.
On obtient ainsi un corpus d’un peu plus de 1 Go.
Ensuite, il suffit de fournir ce corpus à la boîte noire… mais avec pas mal de réglages.
Je ne vais pas entrer dans tous les détails, mais un point important : les mots ne sont pas directement utilisés. Ce sont plutôt les n-grams (fragments de mots) qui composent chaque mot qui sont pris en compte.
Par exemple, les trigrammes (3-grams) du mot guépard sont :
"gue", "uep", "epa", "par" et "ard".
Les vecteurs sont calculés pour chaque n-gramme, puis, pour chaque mot, on fait la moyenne des vecteurs de ses fragments.
Ce paramètre du choix des tailles de n-grams (par exemple 3 à 6) est particulièrement pertinent en français.
En effet, les mots proches partagent souvent une même racine, donc des n-grams communs.
Prenons "chevalier" et "chevaleresque". Ce dernier apparaît très peu dans le corpus Lexiflaire, mais grâce à ses n-grams ("che", "chev", "val", etc.), il bénéficie des nombreuses occurrences de chevalier.
Autre réglage important : le nombre de dimensions.
Dans la visualisation présentée plus haut, on ne voit que 3 dimensions (parce qu’au-delà… on ne peut tout simplement plus visualiser). Mais le modèle, lui, n’est pas limité à 3 dimensions.
Si on choisit 10 dimensions, la boîte noire va transformer chaque mot en un vecteur de 10 nombres.
Si on choisit 1000 dimensions, ce seront 1000 valeurs numériques pour représenter chaque mot.
Voici un extrait du modèle avec seulement 6 dimensions :
statique -0.73778 0.50441 -0.21488 0.15321 -0.31619 -0.52623
parapluie 0.00956 0.50678 -0.25292 0.60919 0.06999 -1.10530
câlin 0.09283 0.38353 0.81148 -0.70804 0.36993 -0.26235
dentition 0.30206 -0.44172 0.06199 -0.16386 1.18450 0.50103
entailler 0.20181 0.52643 0.02855 0.51429 0.16853 -0.13925
Chaque ligne représente un mot, et chaque colonne une coordonnée dans l’espace sémantique.
Ici, on n’a pas seulement des dimensions X, Y et Z… mais U, V, W, X, Y, Z.
Et que l’on ait 3 dimensions, 6 ou 1000, cela ne change rien à la logique :
on peut toujours calculer une distance ou un angle entre deux mots.
Par exemple, une distance en 2 dimensions, c’est le bon vieux Pythagore :
d = √(x² + y²)
Avec nos 6 dimensions, on applique simplement la même formule :
d = √(u² + v² + w² + x² + y² + z²)
Et avec 300 dimensions ? Pareil. Juste un peu plus de patience et un bon CPU.
Mais à quoi correspondent ces "dimensions" ?
Ces dimensions sont apprises automatiquement par l’algorithme via des calculs mathématiques complexes. Contrairement à un questionnaire où chaque question mesure un trait précis (âge, taille, etc.), ici, les dimensions n’ont pas de signification explicite et directe.
Pour autant, ces dimensions portent quand même du sens. Prenons une expérience de pensée :
Imaginons qu’une des dimensions encode le concept de température. Le mot chaud aurait une valeur proche de +1, froid une valeur proche de -1, tandis que des mots sans lien direct comme table ou voiture seraient proches de 0 sur cette dimension.
En réalité, aucune dimension ne représente strictement un concept unique comme la température. Chaque dimension est plutôt un mélange complexe et chaotique, par exemple :
dimension 1 = 0.5 × concept(température) - 0.2 × (concept cinéma ou astronomie) + 0.3 × concept(animaux sauvages), etc.
Mais cette représentation vectorielle permet malgré tout de mesurer la proximité sémantique entre deux mots : plus leurs vecteurs sont proches dans cet espace multidimensionnel, plus leur signification est proche dans le langage.
Donc, comment choisir le nombre de dimensions ?
Les modèles entraînés sur Wikipedia comptent généralement au moins 300 dimensions, qui est le minimum pour bien capter les nuances sémantiques dans un corpus aussi massif.
Alors, plus il y a de dimensions, mieux c’est ? Pas forcément.
Un nombre trop élevé de dimensions peut entraîner un surapprentissage : dans ce cas, chaque mot finit par avoir une proximité sémantique faible avec presque tous les autres mots, ce qui réduit la qualité des distinctions.
À l’inverse, avec trop peu de dimensions, on risque d’avoir beaucoup d’incohérences et de perdre des subtilités importantes. Finalement, le mieux reste d’entraîner plusieurs modèles de différentes dimensions, puis d’estimer empiriquement lequel est le plus performant.
Rang | m25 (25 dims) | Score | m50 (50 dims) | Score | m100 (100 dims) | Score |
---|---|---|---|---|---|---|
0 | guépard | 1.00 | guépard | 1.00 | guépard | 1.00 |
1 | léopard | 0.98 | léopard | 0.97 | léopard | 0.93 |
2 | jaguar | 0.92 | jaguar | 0.93 | jaguar | 0.85 |
3 | puma | 0.91 | puma | 0.90 | panthère | 0.85 |
4 | zèbre | 0.91 | panthère | 0.90 | tigre | 0.84 |
5 | félin | 0.90 | tigre | 0.87 | félin | 0.81 |
6 | ocelot | 0.90 | léopardé | 0.86 | puma | 0.81 |
7 | tigre | 0.90 | félin | 0.85 | léopardé | 0.81 |
8 | panthère | 0.88 | lynx | 0.83 | lion | 0.77 |
9 | fauve | 0.86 | tigré | 0.82 | lynx | 0.73 |
10 | tigré | 0.86 | lion | 0.81 | gazelle | 0.73 |
11 | gazelle | 0.85 | zèbre | 0.81 | antilope | 0.73 |
12 | antilope | 0.85 | fauve | 0.79 | tigré | 0.72 |
13 | léopardé | 0.85 | gazelle | 0.79 | fauve | 0.71 |
14 | lynx | 0.85 | antilope | 0.79 | hyène | 0.68 |
15 | futé | 0.85 | couguar | 0.78 | couguar | 0.68 |
16 | impala | 0.84 | hyène | 0.74 | ocelot | 0.66 |
17 | félidé | 0.83 | ocelot | 0.73 | zèbre | 0.66 |
18 | couguar | 0.82 | phéniqué | 0.72 | sportswear | 0.65 |
19 | lion | 0.81 | félidé | 0.72 | impala | 0.64 |
20 | tacheter | 0.81 | impala | 0.72 | félinité | 0.64 |
21 | zébu | 0.80 | tacheter | 0.71 | lièvre | 0.63 |
22 | félinité | 0.80 | coyote | 0.69 | félidé | 0.62 |
23 | serval | 0.80 | zébu | 0.69 | phacochère | 0.62 |
24 | castor | 0.78 | chacal | 0.68 | coyote | 0.62 |
25 | kényan | 0.78 | mustang | 0.68 | fennec | 0.62 |
26 | wombat | 0.78 | ferrari | 0.67 | chacal | 0.62 |
27 | renard | 0.78 | félinité | 0.67 | phéniqué | 0.61 |
28 | gnou | 0.77 | lionceau | 0.67 | roussâtre | 0.60 |
29 | dalmatien | 0.77 | gavial | 0.66 | buffle | 0.60 |
30 | okapi | 0.77 | roussâtre | 0.66 | isatis | 0.60 |
31 | isard | 0.77 | guêper | 0.66 | girafe | 0.59 |
32 | prédateur | 0.77 | gnou | 0.66 | caracal | 0.59 |
33 | orang-outang | 0.77 | kényan | 0.66 | serval | 0.59 |
34 | coyote | 0.76 | féroce | 0.66 | crocodile | 0.59 |
35 | quiétiste | 0.76 | wombat | 0.66 | férocité | 0.59 |
36 | mustang | 0.76 | fennec | 0.65 | renard | 0.59 |
37 | roussâtre | 0.76 | couard | 0.65 | babiroussa | 0.59 |
38 | linga | 0.76 | ricanant | 0.65 | tigrer | 0.59 |
39 | buffle | 0.76 | jenny | 0.65 | flamand | 0.58 |
40 | legato | 0.75 | férocité | 0.65 | lionceau | 0.58 |
41 | savane | 0.75 | lémurien | 0.65 | poursuiveur | 0.58 |
42 | semi-aride | 0.75 | prédateur | 0.65 | flamant | 0.58 |
43 | sauvagin | 0.75 | girafe | 0.65 | sanglier | 0.58 |
44 | fiat | 0.75 | dalmatien | 0.65 | zébu | 0.58 |
45 | pur-sang | 0.74 | poursuiveur | 0.64 | biche | 0.57 |
46 | tigrer | 0.74 | savane | 0.64 | suricate | 0.57 |
47 | traqueur | 0.74 | semi-aride | 0.64 | sauvagesse | 0.57 |
48 | féroce | 0.74 | biche | 0.64 | ferrari | 0.57 |
49 | animal | 0.74 | proie | 0.64 | hippopotame | 0.57 |
50 | martre | 0.73 | chat | 0.64 | gnou | 0.57 |
Ici, nous avons les 50 mots les plus proches de « guépard » selon trois modèles entraînés avec 25, 50 et 100 dimensions. Analysons ces résultats.
Pour commencer, les "scores" correspondent à la similaritée cosinus. C'est à dire au cosinus de l'angle entre le vecteur "guépard" et les autres vecteurs du modèle.
Pour les trois modèles, le mot « guépard » obtient une similarité parfaite avec lui-même (1,00), ce qui est attendu (cos(0)=1.0). Les mots les plus proches — léopard, jaguar, puma, félin, tigre, panthère — apparaissent systématiquement dans le top 10.
Le modèle à 25 dimensions attribue globalement des scores plus élevés (plus proches de 1) aux mots les plus similaires. Celui à 50 dimensions introduit davantage de variations dans les similarités, avec des scores légèrement plus faibles pour certains mots. Enfin, le modèle à 100 dimensions présente des similarités globalement plus basses, mais une plus grande diversité dans les mots voisins, avec des termes attendus comme « panthère », « tigre », « lion », « hyène », ainsi que quelques mots moins attendus tels que « sportswear » ou « ferrari ».
On observe aussi que certains mots changent de position selon la dimension. Par exemple, « panthère » est en 8e position dans le modèle à 25 dimensions, mais remonte à la 3e ou 4e place dans les modèles à 50 et 100 dimensions. Des mots comme « félin » ou « tigre » varient également sensiblement dans leur classement et leur score.
« Guépard » n’est pas forcément le meilleur exemple, et en réalité il n’y en a pas de parfait. J’ai dû examiner les résultats de plusieurs modèles aux dimensions variées (jusqu’à 300) et pour différents mots, fréquents, rares, avec des concepts larges ou spécifiques. J’en suis, pour le moment, arrivé à la conclusion que le modèle à 100 dimensions offrait un bon compromis.
Maintenant comparons le model a 100 dimensions entrainé avec les données de Lexiflaire et un model a 500 dimensions entrainé avec un corpus wikipedia :
# | mWiki | Score | m100 | Score |
---|---|---|---|---|
0 | guépard | 1.00 | guépard | 1.00 |
1 | hyène | 0.67 | léopard | 0.93 |
2 | lycaon | 0.65 | jaguar | 0.85 |
3 | antilope | 0.65 | panthère | 0.85 |
4 | phacochère | 0.63 | tigre | 0.84 |
5 | caracal | 0.62 | félin | 0.81 |
6 | léopard | 0.62 | puma | 0.81 |
7 | gnou | 0.60 | léopardé | 0.81 |
8 | impala | 0.60 | lion | 0.77 |
9 | gazelle | 0.58 | lynx | 0.73 |
10 | girafe | 0.57 | gazelle | 0.73 |
11 | oryx | 0.56 | antilope | 0.73 |
12 | félin | 0.55 | tigré | 0.72 |
13 | rhinocéros | 0.54 | fauve | 0.71 |
14 | ocelot | 0.54 | hyène | 0.68 |
15 | babouin | 0.54 | couguar | 0.68 |
16 | puma | 0.54 | ocelot | 0.66 |
17 | bubale | 0.53 | zèbre | 0.66 |
18 | zèbre | 0.51 | sportswear | 0.65 |
19 | panthère | 0.51 | impala | 0.64 |
20 | lion | 0.51 | félinité | 0.64 |
21 | suricate | 0.51 | lièvre | 0.63 |
22 | hippopotame | 0.50 | félidé | 0.62 |
23 | félidé | 0.50 | phacochère | 0.62 |
24 | buffle | 0.47 | coyote | 0.62 |
25 | mangouste | 0.47 | fennec | 0.62 |
26 | fennec | 0.46 | chacal | 0.62 |
27 | chacal | 0.46 | phéniqué | 0.61 |
28 | lynx | 0.45 | roussâtre | 0.60 |
29 | lionceau | 0.45 | buffle | 0.60 |
30 | pangolin | 0.43 | isatis | 0.60 |
31 | tigre | 0.43 | girafe | 0.59 |
32 | varan | 0.43 | caracal | 0.59 |
33 | éléphant | 0.42 | serval | 0.59 |
34 | autruche | 0.41 | crocodile | 0.59 |
35 | zoo | 0.41 | férocité | 0.59 |
36 | braconnage | 0.40 | renard | 0.59 |
37 | crinière | 0.40 | babiroussa | 0.59 |
38 | carnivore | 0.40 | tigrer | 0.59 |
39 | cercopithèque | 0.40 | flamand | 0.58 |
40 | mustélidé | 0.40 | lionceau | 0.58 |
41 | coati | 0.40 | poursuiveur | 0.58 |
42 | daim | 0.40 | flamant | 0.58 |
43 | nandou | 0.40 | sanglier | 0.58 |
44 | crocodile | 0.40 | zébu | 0.58 |
45 | jaguar | 0.40 | biche | 0.57 |
46 | harnacher | 0.40 | suricate | 0.57 |
47 | pécari | 0.39 | sauvagesse | 0.57 |
48 | tapir | 0.39 | ferrari | 0.57 |
49 | lamantin | 0.39 | hippopotame | 0.57 |
50 | guanaco | 0.39 | gnou | 0.57 |
On peut noter que le modèle Wikipédia est cohérent (ce qui est attendu), mais avec des scores de similarité sémantique globalement plus faibles. Les mots les plus proches sont aussi différents. Des termes plus encyclopédiques apparaissent rapidement, comme lycaon ou oryx, deux mots absents du modèle Lexiflaire (enfin, lycaon est bien là, mais au-delà de la 200e place).
Le modèle Lexiflaire met surtout en avant d'autres félins dans son top 50, là où le modèle Wikipédia associe aussi des éléments liés à l’environnement du guépard. Par exemple, on trouve crinière et braconnage vers la 37e place. Ces deux mots sont également présents dans le modèle Lexiflaire, mais plus loin : crinière est en position 107 et braconnage en 162.
Les deux modèles sont donc cohérents, et c’est satisfaisant de voir qu’un modèle entraîné avec les parties de Lexiflaire s’en sort plutôt bien face à un modèle formé sur Wikipédia. Ce n’était pas gagné, vu la différence de taille entre les deux corpus.
Voyons maintenant un autre exemple, avec un mot moins courant et moins spécifique qu’un animal : usurpation.
Ce genre de concept abstrait est un bon test pour les modèles sémantiques. Moins d’images concrètes, moins de cooccurrences directes, et des contextes plus flous… Les différences entre modèles devraient y être plus visibles.
# | mWiki | Score | m100 | Score |
---|---|---|---|---|
0 | usurpation | 1.00 | usurpation | 1.00 |
1 | usurper | 0.56 | usurper | 0.80 |
2 | usurpateur | 0.45 | prête-nom | 0.71 |
3 | légitime | 0.38 | falsifier | 0.70 |
4 | compte | 0.35 | imposture | 0.70 |
5 | anonymat | 0.35 | falsification | 0.69 |
6 | coempereur | 0.34 | usurpateur | 0.69 |
7 | frauduleux | 0.32 | faussaire | 0.67 |
8 | identité | 0.32 | truandage | 0.66 |
9 | confirmation | 0.31 | fraude | 0.65 |
10 | légitimité | 0.31 | contrefaçon | 0.64 |
11 | soupçon | 0.30 | escroquerie | 0.64 |
12 | prétendre | 0.29 | plagier | 0.64 |
13 | bureaucrate | 0.29 | spoliation | 0.64 |
14 | faux | 0.29 | escroquer | 0.62 |
15 | empereur | 0.29 | appropriation | 0.62 |
16 | banni | 0.29 | tricherie | 0.62 |
17 | abus | 0.29 | subtiliser | 0.62 |
18 | arroger | 0.29 | identité | 0.61 |
19 | adresse | 0.29 | contrefaire | 0.61 |
20 | honorius | 0.29 | imposteur | 0.61 |
21 | falsifier | 0.29 | dérober | 0.60 |
22 | conspirer | 0.29 | approprier | 0.60 |
23 | raison | 0.28 | arnaque | 0.60 |
24 | comploter | 0.28 | emparer | 0.60 |
25 | bannir | 0.28 | plagiat | 0.59 |
26 | requête | 0.28 | contrefait | 0.59 |
27 | fâcheux | 0.28 | contrebande | 0.59 |
28 | 0.28 | recel | 0.59 | |
29 | steward | 0.27 | truquage | 0.58 |
30 | bannissement | 0.27 | imposte | 0.58 |
31 | authentifier | 0.27 | frauduleux | 0.58 |
32 | intéressé | 0.27 | duperie | 0.58 |
33 | énième | 0.27 | grivèlerie | 0.58 |
34 | répréhensible | 0.27 | tromperie | 0.57 |
35 | vandale | 0.27 | arnaquer | 0.57 |
36 | dissimulation | 0.27 | subornation | 0.57 |
37 | trône | 0.27 | fausser | 0.57 |
38 | malveillant | 0.27 | transgression | 0.56 |
39 | indélicat | 0.27 | plagiaire | 0.56 |
40 | 0.27 | extorsion | 0.56 | |
41 | falsification | 0.27 | transgresseur | 0.56 |
42 | wiki | 0.27 | truanderie | 0.56 |
43 | révolter | 0.26 | brigandage | 0.56 |
44 | prétoire | 0.26 | violation | 0.55 |
45 | piratage | 0.26 | truander | 0.55 |
46 | dioclétien | 0.26 | imiter | 0.55 |
47 | exarque | 0.26 | mystification | 0.55 |
48 | reconnecter | 0.26 | extorquer | 0.55 |
49 | sédition | 0.26 | illégalité | 0.55 |
50 | abuser | 0.26 | supercherie | 0.55 |
Ici, on observe nettement le côté encyclopédique du modèle Wikipedia, avec des mots comme Dioclétien, Honorius ou coempereur, des termes cohérents historiquement mais qui peuvent sembler flous. En revanche, le modèle Lexiflaire est clairement centré sur le champ lexical de la fraude, du plagiat et de la contrefaçon.
Mais à quoi peut bien servir le modèle Lexiflaire ?
Ce modèle permet notamment de compléter le graphe sémantique, qui peut parfois être parcellaire ou trop structuré autour des cooccurrences. Une des applications, dont nous parlerons dans un prochain article, est la détection de thématiques dans le vocabulaire de Lexiflaire. Et bien sûr, il sert aussi à créer un robot capable de jouer à Lexiflaire…
Le modèle ne se limite pas à donner les mots les plus proches dans l’espace sémantique : il permet également de faire des opérations sémantiques, autrement dit de manipuler les concepts de manière vectorielle.Dans le cadre d’une partie de Lexiflaire, on peut par exemple rencontrer trois indices et deux mauvaises réponses proposées par le joueur :
Indices : félin, savane, rapide
Réponses du joueur : chat, lion
À partir de là, on peut construire une opération sémantique sous forme vectorielle, en combinant les indices et en soustrayant les mauvaises réponses :
félin + savane + rapide − chat − lion
On peut même pondérer chaque terme selon son importance perçue :
2 × félin + 1 × savane + 0.5 × rapide − 1 × chat − 0.5 × lion
Ce type de manipulation vectorielle est particulièrement utile dans le cadre d’un robot jouant à Lexiflaire, pour générer de nouveaux indices pertinents à partir du contexte de la partie.
# | mWiki | Score | m100 | Score |
---|---|---|---|---|
0 | félin | 0.73 | félin | 0.81 |
1 | savane | 0.60 | savane | 0.78 |
2 | guépard | 0.46 | guépard | 0.73 |
3 | ocelot | 0.44 | léopard | 0.69 |
4 | félidé | 0.40 | félidé | 0.69 |
5 | puma | 0.39 | fauve | 0.69 |
6 | carnivore | 0.37 | tigre | 0.68 |
7 | antilope | 0.37 | jaguar | 0.68 |
8 | herbeux | 0.37 | gazelle | 0.68 |
9 | aride | 0.37 | semi-aride | 0.67 |
10 | broussaille | 0.37 | panthère | 0.65 |
# | mWiki | Score | m100 | Score |
---|---|---|---|---|
0 | fleur | 0.75 | fleur | 0.81 |
1 | oeuf | 0.75 | oeuf | 0.81 |
2 | pondre | 0.51 | fleurs | 0.72 |
3 | fleurir | 0.50 | éclore | 0.71 |
4 | faner | 0.49 | fleurir | 0.70 |
5 | éclore | 0.49 | marguerite | 0.69 |
6 | pétale | 0.48 | plante | 0.67 |
7 | polliniser | 0.47 | bourgeon | 0.66 |
8 | floraison | 0.47 | liliacé | 0.65 |
9 | tépale | 0.44 | pétale | 0.65 |
Ou encore pour tuyauterie + nébuleuse...
# | mWiki | Score | m100 | Score |
---|---|---|---|---|
0 | nébuleuse | 0.72 | tuyauterie | 0.79 |
1 | tuyauterie | 0.72 | nébuleuse | 0.79 |
2 | nébuleux | 0.60 | canalisation | 0.76 |
3 | amas | 0.50 | plomberie | 0.71 |
4 | messier | 0.47 | tuyautage | 0.69 |
5 | constellation | 0.46 | nébuleux | 0.68 |
6 | extragalactique | 0.46 | tuyau | 0.66 |
7 | ophiuchus | 0.45 | égout | 0.65 |
8 | globulaire | 0.45 | tuyère | 0.65 |
9 | tuyau | 0.45 | robinetterie | 0.65 |