我正在尝试建立一个语音识别器的模型,该语音识别器必须隔离每个单词之间没有间隙的长电话流中的单词(电话串)的实例。电话流可能很难识别,有字母替换/插入/删除,所以我将不得不进行近似的字符串匹配。
但是,我希望匹配能够以语音为动力,例如“m”和“n”在语音上相似,因此与“m”和“k”相比,“m”对“n”的替换成本应该很小。所以,如果我正在搜索[mein]“main”,它会匹配字母序列[meim]“maim”,比如成本0.1,而它会匹配字母序列[meik]“make”,比如说,成本0.7。同样,插入或删除每个字母的成本也不同。我可以提供一个混淆矩阵,对于每个字母对(x,y),给出用x代替x的成本,其中x和y是任何字母或空字符串。
我知道有些工具可以进行近似匹配,例如agrep
,但据我所知,它们不会将混淆矩阵作为输入。也就是说,任何插入/替换/删除= 1的成本。我的问题是,是否有任何已经可用的开源工具可以与混淆矩阵进行近似匹配,如果没有,那么是什么我可以实现一个很好的算法来实现这个目标吗?
答案 0 :(得分:0)
我不知道任何使用混淆矩阵的语音识别器。我知道Soundex和match rating。
我认为K-nearest neighbour algorithm可能对您感兴趣的近似类型有用。
答案 1 :(得分:0)
Peter Kleiweg的Rug/L04(用于计算方言学)包括Levenshtein距离的实现,允许您指定非均匀的插入,删除和替换成本。