我正在尝试建模一个语音识别器,该识别器必须从每个单词之间没有间隙的长音素流中分离出单词实例(音素串)。电话流的识别可能很差,有字母替换/插入/删除,所以我将不得不进行近似的字符串匹配。
但是,我希望匹配以语音为动机,例如“m”和“n”在语音上相似,因此与“m”和“k”相比,“m”对“n”的替换成本应该很小”。因此,如果我正在搜索 [mein] “main”,它将匹配字母序列 [meim] “maim” 与成本 0.1,而它将与字母序列 [meik] “make” 匹配,例如,成本 0.7。同样,插入或删除每个字母的成本也不同。我可以提供一个混淆矩阵,对于每个字母对 (x,y),给出用 y 代替 x 的成本,其中 x 和 y 是任何字母或空字符串。
我知道有一些工具可以进行近似匹配,例如agrep
,但据我所知,它们不会将混淆矩阵作为输入。也就是说,任何插入/替换/删除的成本 = 1。我的问题是,是否有任何可用的开源工具可以与混淆矩阵进行近似匹配,如果没有,我可以实现什么好的算法要做到这一点?
编辑:为了清楚起见,我试图从较长的字符串(例如 [aiammeinlimeiking...])中分离出诸如 [mein] 之类的单词的近似实例。理想情况下,算法/工具应该报告成本为 0.0(精确匹配)的 [mein]、成本为 0.7(接近匹配)的 [meik] 等所有成本低于给定阈值的近似字符串匹配的实例。