Last active
March 3, 2017 22:35
-
-
Save naiaden/e1a517f6cd0a248147c79ef2588c37eb to your computer and use it in GitHub Desktop.
Determine WER
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import sys | |
| from operator import itemgetter | |
| from os import listdir | |
| from os.path import isfile, join | |
| nbest_path = sys.argv[1]#"/scratch/lonrust/cococpypv3/input/nbest/comp-c" | |
| output_path = sys.argv[2]#"/scratch/lonrust/cococpypv3/nbest_rescored/comp-c" | |
| nbest_files = [f for f in listdir(nbest_path) if isfile(join(nbest_path, f))] | |
| nbest_ids = set() | |
| for f in nbest_files: | |
| nbest_ids.add(f.split(".")[0]) | |
| for nid in nbest_ids: | |
| nid_based_files = [] | |
| for nfile in nbest_files: | |
| if nfile.startswith(nid): | |
| ntimes = nfile.split(".")[2] | |
| nstart = ntimes.split(":")[1] | |
| with open(nfile, 'r', encoding = "ISO-8859-1") as f: | |
| tokens = f.readline().strip().split(" ")[3:] | |
| filtered_tokens = list(filter(lambda a: a != '<s>' and a!= '</s>' and a!= '<sil>', tokens)) | |
| nid_based_files.append([nid, nstart, nfile, filtered_tokens]) | |
| nid_based_files.sort(key=lambda x: int(x[1])) | |
| with open(output_path + "/" + nid + ".reranked", 'w', encoding = "ISO-8859-1") as f: | |
| for nbf in nid_based_files: | |
| try: | |
| f.write(' '.join(nbf[3]) + " ") | |
| except TypeError: | |
| print(nbf[3]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [onrust@deneve scripts]$ spr_scoreres -ref ~/reranking/fv800475.reference -tst ~/reranking/fv800475.reranked_plain -PAR -nr stdout | |
| CORPUS (nil) | |
| ================================= | |
| Entry number = 0/-1 | |
| Input string: maar_Sun_Dance_riep_mevrouw_Brogen_lachend_hoe_kun_je_zo_harteloos_zijn_ik_ben_niet_harteloos_vond_Sun_Dance_het_is_gewoon_waar_Man_zegt_altijd_dat_hij_het_leuk_vindt_om_ziek_te_zijn_op_dat_ogenblik_werd_er_geklopt_en_stak_meneer_Robinson_zijn_hoofd_om_de_woonkamerdeur_kom_binnen_kom_binnen_riep_mevrouw_Brogen_het_hindert_niet_dat_je_lekt_ik_ben_eigenlijk_te_nat_zei_meneer_Robinson_vermoeid_maar_hij_stapte_toch_naar_binnen_hij_zag_er_vreselijk_afgemat_uit_en_het_leek_wel_of_hij_net_was_aangespoeld_u_bent_toch_niet_zo_nat_geworden_op_die_paar_meter_door_de_tuin_heen_riep_Robin_uit_dat_heb_je_goed_gezien_zei_meneer_Robinson_hij_schudde_het_natte_haar_uit_z'n_ogen_en_blies_op_z'n_vingers_ik_ben_op_het_strand_geweest_om_die_verd_die_vervl_die_krankzinnige_hond_van_ons_te_roepen_een_half_uur_lang_en_begin_nu_niet_gelijk_tegen_me_te_jammeren_Mier_niemand_heeft_hem_naar_buiten_gestuurd_het_was_z'n_eigen_idee_hij_glipte_langs_me_heen_toen_ik_probeerde_de_brievenbus_dicht_te_maken_zodat_de_regen_niet_naar_binnen_zou_waaien_en_ik_ben_er_net_achter_gekomen_dat_je_moeder_op_de_drempel_naar_hem_heeft_staan_roepen_in_die_wind_hoe_gaat_het_met_haar_onderbrak_mevrouw_Brogen_hem_nog_min_of_meer_hetzelfde_dank_je_antwoordde_meneer_Robinson_hij_bukte_zich_om_een_stapel_cadeautjes_onder_de_kerstboom_te_leggen_ik_moest_je_hartelijk_bedanken_dat_je_het_hele_stel_vanmiddag_hier_wilde_hebben_en_je_een_gelukkig_kerstfeest_wensen_en_je_moest_je_geen_zorgen_maken_je_krijgt_bezoek_morgen_is_het_niet_alleen_Robins_vriend_Dani<EB>l_en_z'n_vader_en_moeder_antwoordde_mevrouw_Brogen_dus_als_ik_wat_kan_doen_wat_dan_ook_zeg_het_dan_en_zeg_tegen_haar_dat_ze_veel_te_veel_heeft_meegegeven_zoveel_pakjes_dat_zegt_ze_van_jou_ook_je_kan_nooit_te_veel_Kerstmis_hebben_zei_Robin_en_Ouwe_Lap_komt_heus_gauw_weer_terug_hij_weet_echt_nog_wel_wat_hij_doet (351) | |
| Recognized: maar_samen_Beyns_riep_mevrouw_belopen_lachend_hoe_kun_je_zo_harteloos_zijn_ik_ben_niet_harteloos_Handzame_mens_het_is_gewoon_waren_waarom_zegt_altijd_dat_het_leuk_vindt_om_ziek_te_zijn_op_dat_ogenblik_werd_er_geklopt_een_sterk_Mr_Robinson_zijn_hoofd_om_de_bomen_raakte_kom_binnen_kom_binnen_ik_ben_verbroken_het_hindert_niet_uitgelekt_in_een_eigen_lijkt_en_dat_zij_Mr_Robinson_vermoeid_maar_hij_stapte_toch_naar_binnen_hijsen_haar_vreselijke_afgemaakt_bij_en_het_leek_wel_of_hij_net_was_aangespoeld_ik_ben_toch_niet_zo_nat_geworden_op_die_paar_meter_door_De_Deyne_��n_Een_probleem_uit_dat_het_je_goed_gezien_zij_mengen_Robinson_hij_scheidde_het_natte_haren_uit_zijn_ogen_en_blies_op_zijn_vingers_ik_ben_beschaamd_geweest_om_leverde_die_vervoeren_die_krankzinnige_om_vanalles_te_roepen_een_halfuur_lang_en_begin_nu_niet_gelijk_tegen_Wetteren_Jan_Renier_niemand_heeft_hem_naar_buiten_gestuurd_het_was_zijn_eigen_idee_hij_glipte_langs_me_heen_toen_ik_probeerde_de_brievenbus_dicht_te_maken_zodat_de_regen_niet_naar_binnen_zou_waaien_en_ik_ben_er_net_achter_gekomen_dat_je_moeder_op_de_drempel_naar_hem_heeft_samenroepen_in_die_wind_hoe_gaat_het_met_haar_onderbuik_mevrouw_berokkent_hem_toch_min_of_meer_hetzelfde_drankje_antwoordde_meneer_mensen_hij_beukte_zich_om_een_stapel_cadeautjes_onder_de_kerstboom_te_leggen_ik_moest_je_hartelijk_bedanken_dat_je_het_hele_stel_vanmiddag_geen_wilde_hebben_en_je_een_gelukkig_kerstfeest_wensen_en_je_moest_je_geen_zorgen_maak_ik_het_bezoek_morgen_is_het_niet_alleen_Robbins_vriendin_Danielle_en_zijn_vader_en_moeder_antwoordde_mevrouw_brokken_dus_als_ik_wat_kan_doen_wat_dan_ook_zeggen_dan_en_zeg_tegen_haar_dat_ze_veel_te_veel_heeft_meegegeven_hoeveel_pakjes_dat_zegt_ze_van_jou_ook_je_kan_nooit_teveel_Kerstmis_hebben_zei_Robin_en_ouwe_rat_komt_wel_eens_gauw_weer_terug_hij_weet_echt_nog_wel_wat_hij_doet (339) | |
| Difference: maar_Sun#S#samen_Dance#S#Beyns_riep_mevrouw_Brogen#S#belopen_lachend_hoe_kun_je_zo_harteloos_zijn_ik_ben_niet_harteloos_D#vond_Sun#S#Handzame_Dance#S#mens_het_is_gewoon_waar#S#waren_Man#S#waarom_zegt_altijd_dat_D#hij_het_leuk_vindt_om_ziek_te_zijn_op_dat_ogenblik_werd_er_geklopt_en#S#een_stak#S#sterk_meneer#S#Mr_Robinson_zijn_hoofd_om_de_woonkamerdeur#S#bomen_I#raakte_kom_binnen_kom_binnen_riep#S#ik_mevrouw#S#ben_Brogen#S#verbroken_het_hindert_niet_D#dat_je#S#uitgelekt_lekt#S#in_ik#S#een_ben#S#eigen_eigenlijk#S#lijkt_te#S#en_nat#S#dat_zei#S#zij_meneer#S#Mr_Robinson_vermoeid_maar_hij_stapte_toch_naar_binnen_D#hij_zag#S#hijsen_er#S#haar_vreselijk#S#vreselijke_afgemat#S#afgemaakt_uit#S#bij_en_het_leek_wel_of_hij_net_was_aangespoeld_u#S#ik_bent#S#ben_toch_niet_zo_nat_geworden_op_die_paar_meter_door_de#S#De_tuin#S#Deyne_heen#S#��n_riep#S#Een_Robin#S#probleem_uit_dat_heb#S#het_je_goed_gezien_zei#S#zij_meneer#S#mengen_Robinson_hij_schudde#S#scheidde_het_natte_haar#S#haren_uit_z'n#S#zijn_ogen_en_blies_op_z'n#S#zijn_vingers_ik_ben_D#op_D#het_strand#S#beschaamd_geweest_om_D#die_verd#S#leverde_die_vervl#S#vervoeren_die_krankzinnige_D#hond_van#S#om_ons#S#vanalles_te_roepen_een_D#half_uur#S#halfuur_lang_en_begin_nu_niet_gelijk_tegen_D#me_te#S#Wetteren_jammeren#S#Jan_Mier#S#Renier_niemand_heeft_hem_naar_buiten_gestuurd_het_was_z'n#S#zijn_eigen_idee_hij_glipte_langs_me_heen_toen_ik_probeerde_de_brievenbus_dicht_te_maken_zodat_de_regen_niet_naar_binnen_zou_waaien_en_ik_ben_er_net_achter_gekomen_dat_je_moeder_op_de_drempel_naar_hem_heeft_D#staan_roepen#S#samenroepen_in_die_wind_hoe_gaat_het_met_haar_onderbrak#S#onderbuik_mevrouw_Brogen#S#berokkent_hem_nog#S#toch_min_of_meer_hetzelfde_D#dank_je#S#drankje_antwoordde_meneer_Robinson#S#mensen_hij_bukte#S#beukte_zich_om_een_stapel_cadeautjes_onder_de_kerstboom_te_leggen_ik_moest_je_hartelijk_bedanken_dat_je_het_hele_stel_vanmiddag_hier#S#geen_wilde_hebben_en_je_een_gelukkig_kerstfeest_wensen_en_je_moest_je_geen_zorgen_maken#S#maak_je#S#ik_krijgt#S#het_bezoek_morgen_is_het_niet_alleen_Robins#S#Robbins_vriend#S#vriendin_Dani<EB>l#S#Danielle_en_z'n#S#zijn_vader_en_moeder_antwoordde_mevrouw_Brogen#S#brokken_dus_als_ik_wat_kan_doen_wat_dan_ook_D#zeg_het#S#zeggen_dan_en_zeg_tegen_haar_dat_ze_veel_te_veel_heeft_meegegeven_zoveel#S#hoeveel_pakjes_dat_zegt_ze_van_jou_ook_je_kan_nooit_D#te_veel#S#teveel_Kerstmis_hebben_zei_Robin_en_Ouwe#S#ouwe_Lap#S#rat_komt_heus#S#wel_I#eens_gauw_weer_terug_hij_weet_echt_nog_wel_wat_hij_doet | |
| Nsub= 74, Nins= 2, Ndel= 14, Ntot= 90 | |
| ================================================================== | |
| Number of entries = 1 | |
| Number of correctly recognized strings = 0 | |
| ================================================================== | |
| Global number of errors = 90/351 (I=2, D=14, S=74) | |
| Percent insertions = 0.57% | |
| Percent deletions = 3.99% | |
| Percent substitutions = 21.08% | |
| ================================================================== | |
| Word recognition rate = 74.36 % correct | |
| String recognition rate = 0.00 % correct | |
| ================================================================== | |
| Word error rate = 25.64 % | |
| String error rate = 100.00 % | |
| ================================================================== | |
| WER=25.64%, (ins=0.57%, del=3.99%, sub=21.08%), #W=351, #S=1, #I=2, #D=14, #S=74, ACC=25.07% | |
| ================================================================== | |
| [onrust@deneve scripts]$ /users/spraak/spchprog/SPRAAK/v1.2/bin/Linux_x86_64/spr_scoreres -ref ~/reranking/fv800475.reference -tst ~/reranking/fv800475.reranked_plain -PAR -nr stdout |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 1. Obtain nbest lists (*best.txt) | |
| 2. Obtain references (*.stm) | |
| 3. Run all the experiments (rescore) | |
| wrexpper | |
| 4. Run nbest2hyp.py on all files from #3 | |
| python nbest2hyp.py /esat/spchdisk/scratch/onrust/nbest/comp-g/original_nbest/ /esat/spchdisk/scratch/onrust/nbest/comp-g/original_hyp/ | |
| 5. Run stm2ref.sh on all references | |
| for f in *.stm; do { cut -d' ' -f 7- $f | tr '\n' ' '; echo ;} > ../ref/$(basename $f .stm).ref; done | |
| 6. Run refhyp2wer.sh for scorez | |
| for f in *.reranked; do /users/spraak/spchprog/SPRAAK/v1.2/build/Linux_x86_64/bin/spr_scoreres -ref /esat/spchdisk/scratch/onrust/nbest/comp-g/ref/$(basename $f .reranked).ref -tst /esat/spchdisk/scratch/onrust/nbest/comp-g/original_hyp/$(basename $f .reranked).reranked -PAR -nr stdout | grep "Word error rate" | sed 's/.* = \(.*\) %/\1/'; done > ../original.wer | |
| 7. Compute average WER | |
| awk '{ total += $1; count++ } END { print total/count }' original.wer |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| spr_scoreres -ref $1 -tst $2 -PAR -nr stdout |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| cut -d' ' -f 7- $1 | tr '\n' ' ' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment