我使用等效于Needleman-Wunsch Algorithm的算法,使用相似矩阵进行模糊序列匹配。
部分结果接近最佳:
SIL d e: n SIL A+ r t i: k E+ l SIL SIL A+ f t @ SIL b u: @ n @ SIL aU s
- d e: n - - @ t e: k 9 l SIL " A+ f d @ - b 9 A+ n @ SIL aU s
但有些不是:
SIL d E+ r SIL I+ n h A+ l t SIL S+ t e: t SIL u:
- - - - - - - z I+ - k - - - - f - -
删除和插入时会出现问题:算法会对齐删除附近的单个字母,这些字母几乎与缺失的部分匹配。
我已经尝试惩罚差距的开始,因此该算法比小的算法更有利于大的差距。结果非常糟糕,因为如上所示,长度为1和2的间隙在正确对齐的部分非常常见。
如何修改算法以避免执行这些错误的对齐,其中包含分散不佳的分散字母(例如f
中的- - - - f - -
,显然应该只是另一个-
) ?
编辑:对于那些不熟悉算法的人:当计算分数时,将采用的方式未知,因为方式取决于猜测:分数。
这意味着在计算分数时我不能考虑相邻的比对,因为它们是未知的。但是如果一个对齐是否足够好取决于邻居:如果一对不合适(记住:我使用填充了概率的相似性矩阵)并被间隙包围,它应该得到一个非常糟糕的分数(见第二个例子) 。如果它被其他更好的拟合对包围,它应该得到一个好分数(见第一个例子)。
所以在计算分数时我有点鸡和蛋的问题。