zoukankan      html  css  js  c++  java
  • 使用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("
    ".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]
    ===================================================================

  • 相关阅读:
    1-EI-灵魂画手解释安卓的Message对象
    2-VVI-材料设计之TabLayout下标签
    1.安卓基础之Activity生命周期
    golang复制一个指针对象(反射)
    小罗的面试题
    http1.0 、http1.1和http2.0的区别
    HTTP长连接、短连接究竟是什么?
    详解TCP中的拥塞控制
    TCP怎么保证传输的安全性
    ulimit设置完在其他用户上没有生效解决办法
  • 原文地址:https://www.cnblogs.com/yinlili/p/11417082.html
Copyright © 2011-2022 走看看