--- title: CharacTER emoji: 🔤 colorFrom: orange colorTo: red sdk: gradio sdk_version: 3.19.1 app_file: app.py pinned: false tags: - evaluate - metric - machine-translation description: >- CharacTer is a character-level metric inspired by the commonly applied translation edit rate (TER). --- # Metric Card for CharacTER ## Metric Description CharacTer is a character-level metric inspired by the translation edit rate (TER) metric. It is defined as the minimum number of character edits required to adjust a hypothesis, until it completely matches the reference, normalized by the length of the hypothesis sentence. CharacTer calculates the character level edit distance while performing the shift edit on word level. Unlike the strict matching criterion in TER, a hypothesis word is considered to match a reference word and could be shifted, if the edit distance between them is below a threshold value. The Levenshtein distance between the reference and the shifted hypothesis sequence is computed on the character level. In addition, the lengths of hypothesis sequences instead of reference sequences are used for normalizing the edit distance, which effectively counters the issue that shorter translations normally achieve lower TER. ## Intended Uses CharacTER was developed for machine translation evaluation. ## How to Use ```python import evaluate character = evaluate.load("character") # Single hyp/ref preds = ["this week the saudis denied information published in the new york times"] refs = ["saudi arabia denied this week information published in the american new york times"] results = character.compute(references=refs, predictions=preds) # Corpus example preds = ["this week the saudis denied information published in the new york times", "this is in fact an estimate"] refs = ["saudi arabia denied this week information published in the american new york times", "this is actually an estimate"] results = character.compute(references=refs, predictions=preds) ``` ### Inputs - **predictions**: a single prediction or a list of predictions to score. Each prediction should be a string with tokens separated by spaces. - **references**: a single reference or a list of reference for each prediction. Each reference should be a string with tokens separated by spaces. ### Output Values *=only when a list of references/hypotheses are given - **count** (*): how many parallel sentences were processed - **mean** (*): the mean CharacTER score - **median** (*): the median score - **std** (*): standard deviation of the score - **min** (*): smallest score - **max** (*): largest score - **cer_scores**: all scores, one per ref/hyp pair ### Output Example ```python { 'count': 2, 'mean': 0.3127282211789254, 'median': 0.3127282211789254, 'std': 0.07561653111280243, 'min': 0.25925925925925924, 'max': 0.36619718309859156, 'cer_scores': [0.36619718309859156, 0.25925925925925924] } ``` ## Citation ```bibtex @inproceedings{wang-etal-2016-character, title = "{C}harac{T}er: Translation Edit Rate on Character Level", author = "Wang, Weiyue and Peter, Jan-Thorsten and Rosendahl, Hendrik and Ney, Hermann", booktitle = "Proceedings of the First Conference on Machine Translation: Volume 2, Shared Task Papers", month = aug, year = "2016", address = "Berlin, Germany", publisher = "Association for Computational Linguistics", url = "https://aclanthology.org/W16-2342", doi = "10.18653/v1/W16-2342", pages = "505--510", } ``` ## Further References - Repackaged version that is used in this HF implementation: [https://github.com/bramvanroy/CharacTER](https://github.com/bramvanroy/CharacTER) - Original version: [https://github.com/rwth-i6/CharacTER](https://github.com/rwth-i6/CharacTER)