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
iwer.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.