3. Metryki - TomekZet/mlworkshops GitHub Wiki

W tym zadaniu przerobimy nasz skrypt z zadania 1. Zamiast liczenia ilości zdań w pliku z ewaluacjami ASR, chcemy obliczyć wartości dwóch metryk wykorzystywanych do oceniania systemów ASR:

  • WER (Word Error Rate - procent niepoprawnie rozpoznanych wyrazów) - dla każdego zdania oraz średnią dla wszystkich zdań
  • SRR - Sentence recognition rate - procent całkowicie poprawnie rozpoznanych zdań
  • SRR i średnie WER zapisujemy do osobnych plików, np. srr.txt i wer.txt
  • WER dla każdego zdania dopisujemy w 5 kolumnie do pliku wejściowego
  • Archiwizujemy wszystkie 3 pliki

Do obliczenia WER możesz użyć programu Sclite

SCLITE działa m.in. na plikach *.trn Poniższy kod pokazuje w jaki sposób można przerobić plik.txt (jedno zdanie w każdej linii) na format trn:

awk 'BEGIN{FS=OFS="\t"}{print $0,"(sp1_"NR")"}' < reference.txt > reference.trn

Pliki reference.txt i hypothesis.txt można otrzymać z plików *.tsv np. poleceniem cut

W kolumnie 2. pliku wikiniews_results.tsv znajdują się hipotezy (wyniki rozpoznawania ASR), w 3. referencje (poprawne zdania).

Wywołanie SCLITE może wyglądać następująco:

sclite -f 0 -r reference.trn trn -h hypothesis.trn trn -e utf-8 -i rm -o all stdout

W hypothesis.trn powinny znaleźć się wyniki działania ASR W reference.trn - referencyjne zdania

Projekt obliczający metryki powinien się wywoływać za każdym razem, kiedy zakończy się powodzeniem projekt ASR-eval. W tym celu należy ustawić parametr "Build Triggers" -> "Build after other projects are built" w konfiguracji joba.