# METEOR (algorithme)

METEOR (Metric for Evaluation of Translation with Explicit ORdering) est une métrique pour l'évaluation des résultats de traduction automatique. La métrique est basée sur la moyenne harmonique de la précision et du rappel de l'unigramme. Elle possède plusieurs fonctionnalités que l'on ne trouve pas dans d'autres mesures, telles que la correspondance radicale et synonymique, ainsi que la correspondance exacte standard des mots.
METEOR est une métrique plus précise que BLEU, une métrique plus populaire. Elle produit également une meilleure corrélation avec le jugement humain. Elle diffère de la métrique BLEU dans la mesure où BLEU recherche une corrélation au niveau du corpus.

## Algorithme

De même que pour BLEU, l'unité de base d'évaluation est la phrase. L'algorithme crée d'abord un alignement entre deux phrases, la chaîne de traduction candidate et la chaîne de traduction de référence. L’alignement est un ensemble de mappages entre des unigrammes. Un mappage peut être considéré comme une ligne entre un unigramme dans une chaîne et un unigramme dans une autre chaîne. Les contraintes sont les suivantes : chaque unigramme de la traduction candidate doit correspondre à zéro ou à un unigramme dans la référence donnée.
Les mappages sont sélectionnés pour produire un alignement. S'il existe deux alignements avec nombre de mappages égal, l'alignement est choisi avec le moins d'intersections de deux mappages. Parmi les deux alignements indiqués en exemple, l'alignement (a) serait sélectionné à ce stade. Les étapes sont exécutées l'une à la suite de l'autre et chaque étape ajoute seulement à l'alignement les unigrammes qui n'ont pas encore été mis en correspondance lors des étapes d'avant. Une fois l'alignement final déterminé, le score est calculé comme suit : La précision Unigram P est calculée avec la relation suivante :
    $P={\frac {m}{w_{t}}}$
Où m est le nombre d'unigrammes dans la traduction candidate qui se trouvent également dans la traduction de référence, et $w_{t}$ est le nombre d'unigrammes dans la traduction candidate. Le rappel d'unigramme R est calculé comme suit :
    $R={\frac {m}{w_{r}}}$
Où $w_{r}$ est le nombre d'unigrammes dans la traduction de référence. La précision et le rappel sont combinés à l'aide de la moyenne harmonique de la manière suivante, le rappel étant pondéré 9 fois plus que la précision :
    $F_{mean}={\frac {10PR}{R+9P}}$
Les mesures qui ont été introduites jusqu'à présent ne tiennent compte que de la congruence par rapport aux mots uniques, mais pas par rapport aux segments plus larges qui apparaissent à la fois dans la référence et dans la phrase candidate. Par exemple :
Prenons la phrase suivante :
   La voiture rouge a foncé dans la maison.
Et supposons que la phrase candidate soit la suivante :
   La voiture a foncé dans la maison rouge.
Afin d'en tenir compte, des correspondances de n -grammes plus longues sont utilisées pour calculer une pénalité p pour l'alignement. Plus il y a de mappages qui ne sont pas adjacents dans la référence et la phrase candidate, plus la pénalité sera élevée.
Afin de calculer cette pénalité, les unigrammes sont regroupés en le moins de morceaux possibles, où un morceau est défini comme un ensemble d'unigrammes adjacents dans l'hypothèse et dans la référence. Plus les mappages adjacents entre le candidat et la référence sont longs, moins il y a de morceaux. Une traduction identique à la référence ne donnera qu’un seul morceau. La pénalité p est calculée comme suit,
    $p=0.5\left({\frac {c}{u_{m}}}\right)^{3}$
Où c est le nombre de morceaux, et $u_{m}$ est le nombre d'unigrammes qui ont été cartographiés. Le score final d'un segment est calculé comme M ci-dessous. La pénalité a pour effet de réduire le $F_{mean}$ jusqu'à 50 % s'il n'y a pas de bigramme ou de correspondances plus longues.
    $M=F_{mean}(1-p)$
Pour calculer un score sur un corpus entier ou un ensemble de segments, les valeurs globales de P, R et p sont prises puis combinées à l'aide de la même formule. L'algorithme fonctionne également pour comparer une traduction candidate à plusieurs traductions de référence. Dans ce cas, l'algorithme compare le candidat à chacune des références et sélectionne le score le plus élevé.

## Exemples

| Référence | le | chat | assis | sur | le | tapis |
| Hypothèse | sur | le | tapis | assis | le | chat |
| Score | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ | $0.9375={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0625}})$ |
| Fmoyenne | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ |
| Peine | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ | $0.0625=0.5\times {\underset {\text{Fragmentation}}{0.5^{3}}}$ |
| Fragmentation | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.5={\frac {\overset {\text{Chunks}}{3.0000}}{\underset {\text{Matches}}{6.0000}}}$ |
| Référence | le | chat | assis | sur | le | tapis |
| Hypothèse | le | chat | assis | sur | le | tapis |
| Score | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ | $0.9977={\underset {\text{Fmean}}{1.0000}}\times (1-{\underset {\text{Penalty}}{0.0023}})$ |
| Fmoyenne | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ | $1.0000=10\times {\underset {\text{Precision}}{1.0000}}\times {\frac {\overset {\text{Recall}}{1.0000}}{{\underset {\text{Recall}}{1.0000}}+9\times {\underset {\text{Precision}}{1.0000}}}}$ |
| Peine | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ | $0.0023=0.5\times {\underset {\text{Fragmentation}}{0.1667^{3}}}$ |
| Fragmentation | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ | $0.1667={\frac {\overset {\text{Chunks}}{1.0000}}{\underset {\text{Matches}}{6.0000}}}$ |

## Voir également

* BLEU
* Mesure F
* Taux d'erreur de mot (WER)