【问题标题】:Approximate string matching with a letter confusion matrix?与字母混淆矩阵匹配的近似字符串?
【发布时间】:2011-02-11 17:45:01
【问题描述】:

我正在尝试建模一个语音识别器,该识别器必须从每个单词之间没有间隙的长音素流中分离出单词实例(音素串)。电话流可能识别不佳,有字母替换/插入/删除,所以我将不得不进行近似字符串匹配。

但是,我希望匹配以语音为动机,例如“m”和“n”在语音上相似,因此“m”对“n”的替换成本应该比“m”和“k”小。因此,如果我正在搜索 [mein] “main”,它将匹配字母序列 [meim] “maim” 与成本 0.1,而它将与字母序列 [meik] “make” 匹配,例如,成本 0.7。同样,插入或删除每个字母的成本也不同。我可以提供一个混淆矩阵,对于每个字母对 (x,y),给出用 y 代替 x 的成本,其中 x 和 y 是任意字母或空字符串。

我知道有一些工具可以进行近似匹配,例如agrep,但据我所知,它们不会将混淆矩阵作为输入。也就是说,any 插入/替换/删除的成本 = 1。我的问题是,是否有任何可用的开源工具可以与混淆矩阵进行近似匹配,如果没有,什么是我可以实现一个好的算法来完成这个吗?

编辑:为了清楚起见,我试图从较长的字符串中分离出诸如 [mein] 之类的单词的近似实例,例如[aiammeinlimeiking...]。理想情况下,算法/工具应该报告成本为 0.0(精确匹配)的 [mein]、成本为 0.7(接近匹配)的 [meik] 等所有成本低于给定阈值的近似字符串匹配的实例。

【问题讨论】:

    标签: grep string-matching agrep


    【解决方案1】:

    我不知道有任何使用混淆矩阵的语音识别器。我知道Soundexmatch rating

    我认为K-nearest neighbour algorithm 可能对您感兴趣的近似类型有用。

    【讨论】:

    • 感谢您的回复。也许我没有解释清楚,但我必须从更长的字符串中挑选出这样接近匹配的字符串,例如[mein] out of [aiammeinlimeiking...] 我试图提取紧密匹配,例如 [mein] 和 [meik],得分分别为 0.0(精确匹配)和 0.7。我不只是比较两个字符串并计算它们的差异,所以我不确定 Soundex 和其他算法是否会有所帮助。如果我错了,请告诉我。
    【解决方案2】:

    Peter Kleiweg 的 Rug/L04(用于计算方言)包含 Levenshtein 距离的实现,允许您指定非均匀插入、删除和替换成本。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2013-07-10
      • 1970-01-01
      • 2010-09-08
      • 2016-03-28
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多