使用2种python脚本工具将2个txt文档中的文字进行比较,并计算出Corr, WER正确率,准确率
一。准备:
linux服务器,src2mlf.py rec2mlf.py HResults文件,1份源文件和1份需要对比的文件。文件放置于本人云盘
二。使用方法:
1. 对比工具 HResults 需要运行在linux环境下,且仅支持mlf文件的对比
2. 两种python脚本工具 src2mlf.py 和 result2mlf.py , 将txt文件转换成 mlf文件
src文件为原始测试集,result文件为识别结果
txt文件格式:(每行 :序号+空格+字串)
1 字串1
2 字串2
3 ...
3.python脚本需要安装python3版本
4.运行方法:
生成原始测试集的mlf文件:python3 src2mlf.py xx.txt > xx.mlf
生成识别结果的mlf文件: python3 result2mlf.py xx.txt > xx.mlf
5. 当准备好需要对比的mlf文件后,以 src.mlf 和 result.mlf 为例,
运行HResults,运行结果打印在屏幕上
./HResults -t -I src.mlf /dev/null result.mlf
运行HResults,运行结果保存至 1.txt 文件中
./HResults -t -I src.mlf /dev/null result.mlf > 1.txt
三。转换脚本内容
#-*- coding:utf-8 -*- import os,sys def to_mlf(xi): dx={ "0":"零", "1":"一", "2":"二", "3":"三", "4":"四", "5":"五", "6":"六", "7":"七", "8":"八", "9":"九" }; d=[] eng=[] tx=[",",".","!","(",")",",","。","!",';','、',':','?','“','”']; for x in xi: u=x.encode("utf-8") #print ("2", u) if u in tx: continue; if len(u)==1: if x in dx: u=dx[x].encode("utf-8") eng.append(str(u, encoding='utf-8')) else: if len(eng)>0: d.append("".join(eng).upper()) eng=[] d.append(str(u, encoding='utf-8')) if len(eng)>0: d.append("".join(eng).upper()) return d def fn_to_lab(s): x=s.split() for i in x: d=to_mlf(i.strip()) if len(d)>0: print("\n".join(d)) print('.') fn=sys.argv[1] print('#!MLF!#') for l in open(fn): l=l.strip() x=l.split() k=x[0].strip() v=" ".join(x[1:]) t=".".join(k) print('"*No%s.lab" ' % t) fn_to_lab(v)
四。测试结果
====================== HTK Results Analysis =======================
Date: Mon Aug 26 16:29:42 2019
Ref : src_1.mlf
Rec : hori.mlf
------------------------ Overall Results --------------------------
SENT: %Correct=77.00 [H=385, S=115, N=500]
WORD: %Corr=97.26, Acc=97.01 [H=8034, D=54, S=172, I=21, N=8260]
===================================================================
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现