专栏首页搜狗测试识别率,你们是怎么理解计算的呢?

识别率,你们是怎么理解计算的呢?

前言

当我们测试语音识别相关的系统,衡量性能是非常重要的,一般语音识别准确性最常用的度量标准是字错误率,比如录音笔中的转写功能或者输入法语音输入等等,其实就是语音识别提供的服务,因此也需要测试相关的指标。

今天在这里要给大家介绍的是语音识别率到底有哪些指标以及如何计算

正文

测试语音识别系统时,系统可能会产生三种类型的错误

  • 替换:其中一个单词被错误地识别为另一个单词
  • 删除:其中原文中有一个单词漏识别
  • 插入:识别出一个在原文中不存在的单词

那么常用的度量标准字错误率是怎么计算的呢,除了字错误率还有没有其他度量标准

1、字错率(WER/CER)

WER:Word Error Rate,词错率,

CER:Character Error Rate,字符错误率

这两个有什么区别呢?

  • 如像英文一样的语言,被测的最小单元是一个word,不是一个字符,所以应该用WER,举个例子 “hello” 表示一个词作对比,不应该h,e,l,l,o拆分出来再做对比,同样比如法语,俄语,德语,西班牙语等;
  • 那么另外一种语言,像中文一样的语言,被测的最小单元是一个字符,所以应该用CER,举个例子 “你好” 表示两个字符,同样比如韩语,日语,泰语等;

但是计算方法是一样的。计算公式如下

WER = (S + D + I ) / N

= (S + D + I ) / (S + D + C )

  • S为替换的字数
  • D为删除的字数
  • I为插入的字数
  • C为正确的字数
  • N为 (替换 + 删除 + 正确)的字数,以原文为参考

* N的计算方式,很容易误以为是 识别结果总字数

2、字正确率(Word Correct)

一般国内宣传用的多的识别率达到多少就是用这个

计算公式

W.Corr = C / N

* 只计算了识别正确的字,没有管多出来的字(插入)

3、字准确率 (Word Accuracy)

其实字准确率才是更具有代表语音识别系统的性能评测标准

计算公式如下

W.Acc = (C - I)/ N

* 当 I(插入)= 0 时,W.Acc = W.Corr

在实际demo测试中可能会碰到WER会大于100%的时候,这是因为有插入字,所以理论上WER有可能大于100%,可能被测的场景下样本量太少或者就是无用暴力型测试对比导致的问题,一般实际场景下特别是大样本量的时候基本不太可能出现。如果WER真的太大了就表示此系统就不可用了,所以一般可用的ASR系统都在一个比较低的值。

4、句错误率(Sentence Error Rate)

句子识别错误的个数,除以总的句子个数即为SER

计算公式如下

SER = 错误句数 / 总句数

但这是不太常用的评估指标,它将每个句子视为正确或不正确的单个样本。

如果句子中的任何单词被错误假设,则改句子被判断为错误。SER被简单地计算为错误句子占总句子的比例

5、OOV rate (Out-of-vocabulary)

percent of word tokens in test data that are not contained in the ASR system dictionary

实在抱歉只能粘贴英文原文,大概意思就是无法识别出系统词库外的词的百分比

计算公式如下

OOV = OOV words / N = D / N

* 如有解释有误,请指出并改正

那接下来已举几个例来看不同场景下的识别率便于大家了解(识别数据非实际语音测试结果,仅供举例)

只有删除的情况

原文:今天天气怎么样明天天气好吗

识别:今天天气怎么 明天 气好吗

存在替换和删除的情况

原文:这是虽在北方的风雪的压迫下却保持着倔强挺立的一种树

识别:这是谁在北方 风雪的压迫下却保持着觉强听力的一种书

替换+删除+插入的情况

原文:如果美是专指婆娑或横斜逸出之类而言那么白杨树算不得树中的好女子

识别:如果美 专指婆娑或从协议出之类而言啊那么白杨树算不得数猪的好女子

全部错误(结果字数 < 语料字数)

原文:那是力争上游的一种树

识别:异中输

全部错误(结果字数 > 语料字数)

原文:哪怕只有碗来粗细罢

识别:婆娑的姿态屈曲盘旋的虬枝

顺便举一个英文转写的准确率

小编在这里使用的是python的difflib库,脚本代码大致的思路是

  • 预处理 - 符号换行空格处理和两种语言分类处理(比如中文和英文)
  • 对比并输出 - difflib库功能
  • 匹配计算 - 输出html结果进行匹配过滤

或者还可以使用其他库或者工具也可,顺便列举一下,供参考

代码依赖库或者工具

  • python的difflib自带库 (基于Gestalt Pattern Matching算法,是一个串匹配算法用于确定所述相似性两者的字符串)
  • python的Lenvenshtein第三方库
  • HResults 现成的HTK工具

还有别的方法或者工具的话推荐一下,期待小伙伴们留言


注:参考

https://en.wikipedia.org/wiki/Word_error_rate

https://en.wikipedia.org/wiki/Gestalt_Pattern_Matching

https://en.wikipedia.org/wiki/Levenshtein_distance

https://labrosa.ee.columbia.edu/doc/HTKBook21/node142.html

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:stephen.lee

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 计算机是怎么理解人类语言的?

    让计算机理解人类语言 “教”计算机理解人类的自然语言这部分工作,称作自然语言理解(Natural Language Understanding / NLU)。 ...

    叶锦鲤
  • 张钹院士:走向真正的人工智能 | CCF-GAIR 2018

    6 月 29 日上午,清华大学研究院院长张钹院士为 CCF-GAIR 2018 主会场「AI 前沿技术」做了题为「走向真正的人工智能」(Towards A Re...

    AI科技评论
  • 张钹院士:走向真正的人工智能

    摘要:6 月 29 日上午,清华大学研究院院长张钹院士为 CCF-GAIR 2018 主会场「AI 前沿技术」做了题为「走向真正的人工智能」(Towards A...

    钱塘数据
  • 张钹院士:走向真正的人工智能 | CCF-GAIR 2018

    AI 研习社按:2018 全球人工智能与机器人峰会(CCF-GAIR)在深圳召开,峰会由中国计算机学会(CCF)主办,雷锋网、香港中文大学(深圳)承办,得到了宝...

    AI研习社
  • 我是一个平平无奇的AI神经元

    人体中的神经元可以传递生物信号,给它输入一个信号,它经过处理后再输出一个信号传递给别的神经元,最终传递到大脑完成对一个信号的决策和处理。

    轩辕之风
  • 中国大数据专家委员会顾问、中国科学院院士张钹:大数据与人工智能研究的思考

    用户1737318
  • 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

    我公众号里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。框架千变万化,而这些通用的...

    kbsc13
  • 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

    在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。

    乔戈里
  • 商汤科技徐立:AI 将在10 年内创造一个印度和中国的总产值

    【新智元导读】3月22日,清华大学《人工智能前沿与产业趋势》系列课程第二讲开课,本讲聚焦当前AI领域最火、落地应用最成功的计算机视觉,由商汤科技CEO徐立主讲。...

    新智元

扫码关注云+社区

领取腾讯云代金券