COMET-poly
Collection
Models and paper for COMET-poly: Machine Translation Metric Grounded in Other Candidates
•
5 items
•
Updated
This model is based on COMET-poly, which is a fork but not compatible with original Unbabel's COMET. To run the model, you need to first install this version of COMET either with:
pip install "git+https://github.com/zouharvi/COMET-poly#egg=comet-poly&subdirectory=comet_poly"
or in editable mode:
git clone https://github.com/zouharvi/COMET-poly.git
cd COMET-poly
pip3 install -e comet_poly
This model scores the translation mt
but takes additional three in-context example: sources src2
, src3
, src4
, translations mt2
, mt3
, mt4
, and scores score2
, score3
, score4
, which makes it a better quality estimator:
import comet_poly
model = comet_poly.load_from_checkpoint(comet_poly.download_model("zouharvi/COMET-poly-ic3-wmt25"))
data = [
{
"src": "Iceberg lettuce got its name in the 1920s when it was shipped packed in ice to stay fresh.",
"mt": "Eisbergsalat erhielt seinen Namen in den 1920er-Jahren, als er in Eis verpackt verschickt wurde, um frisch zu bleiben.",
"src2": "Lettuce is mostly water, which helps keep it crisp when chilled.",
"mt2": "Kopfsalat besteht größtenteils aus Wasser, was ihm hilft, beim Kühlen knackig zu bleiben.",
"score2": 94.5,
"src3": "Iceberg lettuce is often used in burgers for its crunch and mild flavor.",
"mt3": "Íssalat er oft notað í hamborgara vegna stökkleika og milds bragðs.",
"score3": 92.0,
"src4": "Farmers harvest lettuce early in the morning to keep it fresh longer.",
"mt4": "Les agriculteurs récoltent la laitue tôt le matin pour la garder fraîche plus longtemps.",
"score4": 82.3
},
{
"src": "Goats have rectangular pupils, which give them a wide field of vision—up to 320 degrees!",
"mt": "Kozy mají obdélníkové zornice, což jim umožňuje vidět skoro všude kolem sebe, aniž by musely otáčet hlavou.",
"src2": "Sheep, like goats, also have rectangular pupils for better peripheral vision.",
"mt2": "Вівці, як і кози, також мають прямокутні зіниці для кращого периферичного зору.",
"score2": 96.0,
"src3": "This unique eye shape helps them detect predators early.",
"mt3": "Ця унікальна форма очей допомагає їм рано виявляти хижаків.",
"score3": 93.2,
"src4": "Goats' vision stays stable even when they climb steep surfaces.",
"mt4": "Kozí vidění zůstává stabilní když jdou na vysoký svah.",
"score4": 67.4
},
{
"src": "This helps them spot predators from almost all directions without moving their heads.",
"mt": "Điều này giúp chúng phát hiện kẻ săn mồi từ gần như mọi hướng mà không cần quay đầu.",
"src2": "Many prey animals have evolved to detect threats with minimal movement.",
"mt2": "Nhiều động vật thịt có tiến hóa để xem mối nguy bằng nhỏ đi lại.",
"score2": 42.3,
"src3": "Nepohybující se držení těla pomáhá zvířatům zůstat bez povšimnutí a přitom být ostražitá.",
"mt3": "Нерухома поза допомагає тваринам залишатися непоміченими, залишаючись при цьому пильними.",
"score3": 90.1,
"src4": "Animals like deer rely on peripheral vision to detect danger.",
"mt4": "Los animales como los ciervos confían en la visión periférica para detectar el peligro.",
"score4": 85.0
}
]
print("scores", model.predict(data, batch_size=8, gpus=1).scores)
Outputs:
scores [98.42459869384766, 94.70307922363281, 91.14827728271484]
You can use a readily-available training data to do the on-the-fly retrieval.
Specifically, this model has been trained with retrieval based on src
:
import datasets
import comet_poly.retrieval
data = [
{
"src": "Iceberg lettuce got its name in the 1920s when it was shipped packed in ice to stay fresh.",
"mt": "Eisbergsalat erhielt seinen Namen in den 1920er-Jahren, als er in Eis verpackt verschickt wurde, um frisch zu bleiben.",
},
{
"src": "Goats have rectangular pupils, which give them a wide field of vision—up to 320 degrees!",
"mt": "Kozy mají obdélníkové zornice, což jim umožňuje vidět skoro všude kolem sebe, aniž by musely otáčet hlavou.",
},
{
"src": "This helps them spot predators from almost all directions without moving their heads.",
"mt": "Điều này giúp chúng phát hiện kẻ săn mồi từ gần như mọi hướng mà không cần quay đầu.",
}
]
data_kb = list(datasets.load_dataset("zouharvi/wmt-human-all", split="train"))
data_retrieved = comet_poly.retrieval.retrieve_from_kb(
data=data,
data_kb=data_kb,
k=3, # this model takes three in-context examples
prevent_hardmatch=False,
key="src",
)
# add the retrieved data
for line, lines_retrieved in zip(data, data_retrieved):
for i in range(len(lines_retrieved)):
line[f"src{i+2}"] = lines_retrieved[i]["src"]
line[f"mt{i+2}"] = lines_retrieved[i]["mt"]
line[f"score{i+2}"] = lines_retrieved[i]["score"]
print("scores", model.predict(data, batch_size=8, gpus=1).scores)
The training data is WMT up to 2024 (inclusive) with DA/ESA/MQM merged on a single scale. This model is based on the work TODO which can be cited as:
@misc{zuefle2025comet,
title={COMET-poly: Machine Translation Metric Grounded in Other Candidates},
author={Maike Züfle, Vilém Zouhar, Tu Anh Dinh, Felipe Polo, Jan Niehues, Mrinmaya Sachan},
year={2025},
}
Base model
FacebookAI/xlm-roberta-large