Helsinki-NLP / Opus-MT

Open neural machine translation models and web services
MIT License
574 stars 71 forks source link

Postprocess script does not remove starting space #76

Open ZJaume opened 1 year ago

ZJaume commented 1 year ago

Using Tatoeba-MT-models/gmq-eng/opusTCv20210807+bt_transformer-big_2022-03-09 to translate WMT21 test set for Icelandic. The postprocess script

#!/bin/bash
#
# USAGE postprocess.sh < input > output
#

sed 's/ //g;s/▁/ /g'

does not take into account starting spaces inserted by SentencePiece.

These sentences from WMT21 test set Icelandic:

Forsætisráðherra Indlands mun mæta í skóflustungu fyrir byggingu hofs á umdeildum stað
NÝJA-DELÍ (AP) – Narendra Modi, forsætisráðherra Indlands, verður viðstaddur skóflustunguathöfn fyrir byggingu hindútrúarhofs á umdeildum stað í Norður-Indlandi, þar sem moska frá 16. öld var rifin niður af strangtrúuðum hindúum árið 1992, að sögn samtakanna sem hafa umsjón með byggingu hofsins.
Athöfnin á að fara fram 5. ágúst, en skipuleggjendur segja þá dagsetningu boða lukku fyrir hindúa samkvæmt stjörnuspeki auk þess sem þá er ár liðið frá því að indverska þingið afnam sérstaka sjálfstjórnarstöðu eina ríkisins þar sem múslimar eru í meirihluta íbúa, Jammu og Kasmír.
Symbólisminn í dagsetningarvalinu var augljós bæði stuðningsmönnum og andstæðingum hins þjóðernissinnaða hindúflokks Modi, Bharatiya Janata-flokksins, eða BJP, en flokkurinn hefur áratugum saman haft það að stefnu sinni að afnema sjálfstjórn Kasmírs og byggja hof hindúguðsins Ram þar sem moskan frá tímum Mógúlveldisins stóð eitt sinn, í Ayodhya-borg í ríkinu Uttar Pradesh sem trúarfólk telur vera fæðingarstað Ram.
Kórónuveiran er enn skæð víða í Indlandi, en þar greinist þriðji mesti fjöldi tilfella á heimsvísu, og því verður athöfnin send beint út í ríkissjónvarpinu og fjöldi þátttakenda og áhorfenda verður takmarkaður, samkvæmt Vishwa Hindu Parishadm, eða heimssamtökum hindúa, þjóðræknum hóp sem hefur tengsl við BJP.

Are tokenized like this (with the preprocess.sh script)

head -5 wmt21.is | ./preprocess.sh is source.spm
▁For sæt is ráðherra ▁Ind lands ▁mun ▁mæt a ▁í ▁skó flu stu ngu ▁fyrir ▁bygging u ▁ hof s ▁á ▁um deild um ▁stað
▁N Ý J A - DEL Í ▁( AP ) ▁– ▁Nar en dra ▁Mod i , ▁for sæt is ráðherra ▁Ind lands , ▁verður ▁við stad dur ▁skó flu stu ngu at höfn ▁fyrir ▁bygging u ▁ hind ú t rú ar hof s ▁á ▁um deild um ▁stað ▁í ▁Norður - Ind landi , ▁þar ▁sem ▁mo ska ▁frá ▁16. ▁öld ▁var ▁ri fin ▁niður ▁af ▁str ang t rú uðum ▁ hind ú um ▁árið ▁1992 , ▁að ▁ sögn ▁samt ak anna ▁sem ▁hafa ▁um s jón ▁með ▁bygging u ▁ hof sins .
▁At höfn in ▁á ▁að ▁fara ▁fram ▁5. ▁ágúst , ▁en ▁skip u legg j endur ▁segja ▁þá ▁dag setningu ▁bo ða ▁ luk ku ▁fyrir ▁ hind ú a ▁samkvæmt ▁stjörnu spe ki ▁auk ▁þess ▁sem ▁þá ▁er ▁ár ▁lið ið ▁frá ▁því ▁að ▁ind ver ska ▁þing ið ▁af nam ▁sér s taka ▁sjálf stjórn ar stöðu ▁eina ▁ríkis ins ▁þar ▁sem ▁m ú s lim ar ▁eru ▁í ▁meiri hluta ▁íbúa , ▁Jam mu ▁og ▁Kas m í r .
▁Sym b ól ism inn ▁í ▁dag setning ar val inu ▁var ▁aug ljós ▁bæði ▁stuðning s mönnum ▁og ▁and stæð ing um ▁hins ▁þjóð er nis s inna ða ▁ hind ú flokk s ▁Mod i , ▁Bha rat iya ▁Jan ata - flokk sins , ▁eða ▁B JP , ▁en ▁flokk urinn ▁hefur ▁áratug um ▁saman ▁haft ▁það ▁að ▁stefnu ▁sinni ▁að ▁af ne ma ▁sjálf stjórn ▁Kas m í r s ▁og ▁byggja ▁ hof ▁ hind ú g uð sins ▁Ram ▁þar ▁sem ▁mos kan ▁frá ▁t ím um ▁M ó g úl veld i sins ▁stóð ▁eitt ▁sinn , ▁í ▁Ay od hy a - borg ▁í ▁rík inu ▁Ut tar ▁Pra de sh ▁sem ▁trú ar fólk ▁tel ur ▁vera ▁f æð ingar stað ▁Ram .
▁K ór ón u vei ran ▁er ▁enn ▁sk æð ▁v íða ▁í ▁Ind landi , ▁en ▁þar ▁grein ist ▁þ rið ji ▁mest i ▁fjöl di ▁til fell a ▁á ▁heims ví su , ▁og ▁því ▁verður ▁at höfn in ▁send ▁beint ▁út ▁í ▁ríkis s jón varp inu ▁og ▁fjöl di ▁þátt tak enda ▁og ▁á hor f enda ▁verður ▁takmarka ður , ▁samkvæmt ▁Vi sh wa ▁Hind u ▁Parish ad m , ▁eða ▁heims samtök um ▁ hind ú a , ▁þjóð r æk num ▁hóp ▁sem ▁hefur ▁ten gs l ▁við ▁B JP .

and then the postprocess generates starting spaces when replaces the .

 Forsætisráðherra Indlands mun mæta í skóflustungu fyrir byggingu hofs á umdeildum stað
 NÝJA-DELÍ (AP) – Narendra Modi, forsætisráðherra Indlands, verður viðstaddur skóflustunguathöfn fyrir byggingu hindútrúarhofs á umdeildum stað í Norður-Indlandi, þar sem moska frá 16. öld var rifin niður af strangtrúuðum hindúum árið 1992, að sögn samtakanna sem hafa umsjón með byggingu hofsins.
 Athöfnin á að fara fram 5. ágúst, en skipuleggjendur segja þá dagsetningu boða lukku fyrir hindúa samkvæmt stjörnuspeki auk þess sem þá er ár liðið frá því að indverska þingið afnam sérstaka sjálfstjórnarstöðu eina ríkisins þar sem múslimar eru í meirihluta íbúa, Jammu og Kasmír.
 Symbólisminn í dagsetningarvalinu var augljós bæði stuðningsmönnum og andstæðingum hins þjóðernissinnaða hindúflokks Modi, Bharatiya Janata-flokksins, eða BJP, en flokkurinn hefur áratugum saman haft það að stefnu sinni að afnema sjálfstjórn Kasmírs og byggja hof hindúguðsins Ram þar sem moskan frá tímum Mógúlveldisins stóð eitt sinn, í Ayodhya-borg í ríkinu Uttar Pradesh sem trúarfólk telur vera fæðingarstað Ram.
 Kórónuveiran er enn skæð víða í Indlandi, en þar greinist þriðji mesti fjöldi tilfella á heimsvísu, og því verður athöfnin send beint út í ríkissjónvarpinu og fjöldi þátttakenda og áhorfenda verður takmarkaður, samkvæmt Vishwa Hindu Parishadm, eða heimssamtökum hindúa, þjóðræknum hóp sem hefur tengsl við BJP.

I think this is due to SentencePiece having the corresponding tokens learned only with the at the beginning. If I use spm_decode -m model.spm this does not happen because SP takes care of it.

jorgtied commented 1 year ago

Thanks for pointing this out. I should adjust the post-processing script. Does spm_decode do something else that i was not aware of? I never really understood why it would need this separate program and the model as argument. Maybe I am missing something important?

ZJaume commented 1 year ago

I don't know if it does anything else but I personally prefer to use it. It seems that is also removing trailing and duplicate spaces, see https://github.com/google/sentencepiece/issues/650.