编辑距离与WER的计算
作者:互联网
编辑距离(edit distance)
做语音识别算法工程师好几年,最近才弄清楚wer的统计算法-编辑距离,真是惭愧。
编辑距离,又称Levenshtein Distance,是一位俄罗斯的科学家Vladimir Levenshtein 在1965年在1965年提出来的。编辑距离指的是在两个字符串S1和S2 之间,将S1转换为S2所需要的最少编辑操作次数。
字符编辑操作有且仅有三种:
- 插入(Insertion)
- 删除(Deletion)
- 替换(Substitution)
算法公式:
我们将两个字符串 a,b 的编辑距离表示为,其中和 分别对应字符串a,b的长度。两个字符串 a,b 的编辑距离即可用如下的数学语言表示:
是指字符串a的前个字符和字符串b的前个字符之间的编辑距离。这里的的上限是的长度。注意,字符串的第一个字符的index从 1 开始。
当,表示字符串a或者b有一个是空字符串,所以,将a转化成b就需要次编辑。
当, 表示a和b都不是空字符串,a和b的编辑距离等于三种情况下编辑距离的最小值。其中,
- 表示插入编辑,(个人理解:从末尾删除一个字符后的和的编辑距离只需做一次插入操作就和相等)
- 表示删除编辑,
- 且 表示替换编辑,
- 且 表示跳过不做编辑
举例:
a: "This great machine can recognize speech"
b: “This machine can wreck a nice beach”
1. 首先列一个表格,表格的长度和宽度分别等于|a|+2和|b|+2,行列开头分别填充一个0.
0 | this | machine | can | wreck | a | nice | beach | |
0 | ||||||||
this | ||||||||
great | ||||||||
machine | ||||||||
can | ||||||||
recognize | ||||||||
speech |
2. 计算当
0 | this | machine | can | wreck | a | nice | beach | |
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
this | 1 | |||||||
great | 2 | |||||||
machine | 3 | |||||||
can | 4 | |||||||
recognize | 5 | |||||||
speech | 6 |
3. 计算第一行:
0 | this | machine | can | wreck | a | nice | beach | |
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
this | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
great | 2 | |||||||
machine | 3 | |||||||
can | 4 | |||||||
recognize | 5 | |||||||
speech | 6 |
计算技巧:只需要计算单元格的上+1,左+1,左上+1(或+0)的值,再进行比较即可。比如计算(1,2)时,上面单元2+1=3,左面单元0+1=1,左上单元,由于this = machine,所以是1+0=1。三者取最小值是1
0 | this | machine | |
0 | 0 | 1 | 2 |
this | 1 | 0 | 1 |
4. 以此类推,填满整个表格,最右下角的值就是a和b的编辑距离5。
0 | this | machine | can | wreck | a | nice | beach | |
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
this | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
great | 2 | 1 | 1 | 2 | 3 | 4 | 5 | 6 |
machine | 3 | 2 | 1 | 2 | 3 | 4 | 5 | 6 |
can | 4 | 3 | 2 | 1 | 2 | 3 | 4 | 5 |
recognize | 5 | 4 | 3 | 2 | 2 | 3 | 4 | 5 |
speech | 6 | 5 | 4 | 3 | 3 | 3 | 4 | 5 |
5. 那在语音识别里面,如何分别计算删除错误D,插入错误I,和替换错误S呢?只需要从图标右下角,根据前向计算过程的选择进行回溯即可。但是不同的回溯方式可能会计算出不同的IDS。如下图所示,不同颜色的回溯路径:
如,红色路径。对应的回溯路径是c-d-c-c-s-s-i-i.
那么:ref :This great machine can recognize speech
hyp:This machine can wreck a nice beach
再比如绿色路径,对应的额回溯路径是:c-d-c-c-s-i-i-s
那么:ref :This great machine can recognize speech
hyp:This machine can wreck a nice beach
橙色和蓝色回溯路径,同样会导致ref和hyp对应方式不同。但是这些不同的回溯方式不影响最终的识别率的值。
上面的例子,不同过的回溯路径恰好会使IDS相同,但是,有的时候,不用的回溯路径会导致不同的IDS。例如:
ref: x, y, z; hyp: a,b,c,y
ref: x y z
hyp: a b c y
或者:
ref: x y z
hyp:a b c y
上面两种不同的对齐方式,编辑距离一样,wer也一样,但是IDS一个是2-1-1,另外一个是 1-0-3。
标签:hyp,编辑,距离,machine,WER,回溯,字符串 来源: https://blog.csdn.net/yishujixiaoxiao/article/details/114373775