wrd_error.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import jiwer
  2. import glob
  3. import os
  4. import re
  5. from collections import defaultdict
  6. root_path = 'sample/wrd/'
  7. clova = 'clova_200.wrd'
  8. aws = 'aws_200.wrd'
  9. GT = 'GT_200.wrd'
  10. def get_list(list, path):
  11. with open(os.path.join(root_path, path), 'r') as f:
  12. for line in f:
  13. line = f.readline().strip()
  14. line = re.sub(r"[^\uAC00-\uD7A30-9a-zA-Z\s]", "", line)
  15. list.append(line)
  16. return list
  17. def get_error_rate(gt, target, filename):
  18. cer_list = []
  19. wer_list = []
  20. sum_cer = 0
  21. sum_wer = 0
  22. for _gt, _target in zip(gt, target):
  23. cer = jiwer.cer(_gt, _target)
  24. wer = jiwer.wer(_gt, _target)
  25. cer_list.append(cer)
  26. wer_list.append(wer)
  27. sum_cer += cer
  28. sum_wer += wer
  29. print(f"cer avg : {sum_cer/len(cer_list)}")
  30. print(f"wer avg : {sum_wer/len(wer_list)}")
  31. if __name__ == '__main__':
  32. clova_list = get_list([], clova)
  33. aws_list = get_list([], aws)
  34. GT_list = get_list([], GT)
  35. get_error_rate(GT_list, clova_list, '')
  36. get_error_rate(GT_list, aws_list, '')