Tutorial materials for the human evaluation tutorial by Vilém Zouhar, Maike Züfle, Patrícia Schmidtová. Look at the slides or the slides without animations.
You can run your own human evaluation campaign with Pearmut.
cd our_own_humeval
pip install pearmut0a_da.json is a starting point with simple direct assessment campaign.
Fill in your own source texts and translations, then run:
pearmut add campaigns/0a_da.json
pearmut runOpen the dashboard link printed in the terminal to manage the campaign and access annotator URLs.
The 0b_esa.json, 0c_cesa.json, and 0d_mqm.json contain ESA, cESA, and MQM annotation protocol defaults.
1_sliders.json: text-based evaluation with two custom sliders (Fluency and Adequacy).
pearmut add campaigns/1_sliders.json
pearmut run2_spans.json: annotators highlight error spans in the translation and set severity (minor/major), then rate overall quality.
pearmut add campaigns/2_spans.json
pearmut run2_spans.json: annotators highlight error spans in the translation and set custom taxonomy
pearmut add campaigns/3_custom_spans.json
pearmut run4_freetext.json: same as Step 2, plus a free-text comment box.
pearmut add campaigns/4_freetext.json
pearmut run5_multimodal.json: image and audio inputs. Media files are in assets/ and served based on the configuration in the JSON.
pearmut add campaigns/5_multimodal.json
pearmut runThree configs with the same 4 items, showing different distribution strategies:
- 6a: one annotator gets everything (
6a_one_annotator.json): task-based with 1 user. - 6b: items split across annotators (
6b_four_annotators.json): task-based with 4 users, each gets 1 item. - 6c: automatic distribution (
6c_single_stream.json): single-stream with 4 users anddocs_per_user: 2. Items are drawn randomly from a shared pool: each item is annotated once, then skipped for everyone else.
pearmut add campaigns/6a_one_annotator.json
pearmut add campaigns/6b_four_annotators.json
pearmut add campaigns/6c_single_stream.json
pearmut run- Run all
pearmutcommands fromour_own_humeval/folder - To overwrite a campaign after changes:
pearmut add campaigns/X.json -o - To reset all data:
pearmut purge
Slides are written in Typst and can be compiled locally:
cd slides
# TODO: add slides
# note: requires "IBM Plex" font installed locally
typst compile main_slides.typIf you find this tutorial (MIT license) useful or want to cite it, please use:
@misc{zouhar2026humeval,
author = {Zouhar, Vilém and Züfle, Maike and Schmidtová, Patrícia},
title = {Human Evaluation of Multilingual Tasks},
year = {2026},
url = {https://github.com/zouharvi/humeval-tutorial},
note = {Tutorial at EAMT 2026, KONVENS 2026, and MT Marathon 2026}
}