我正在使用与Needleman-Wunsch算法等效的算法来使用相似度矩阵进行模糊序列匹配。
一些结果接近最佳:
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
in - - - - f - -
,显然应该只是另一个-
)?
编辑:对于那些不熟悉算法的人:计算分数时,不知道将采取的方式,因为方式取决于猜测:分数。
这意味着在计算分数时我不能考虑相邻的路线,因为它们是未知的。但是如果对齐是否足够好取决于邻居:如果一对不合适(请记住:我使用填充概率的相似性矩阵)并且被间隙包围,它应该得到非常差的分数(参见第二个示例) . 如果它被其他更合适的对包围,它应该得到一个很好的分数(见第一个例子)。
因此,在计算分数时,我遇到了一些先有鸡还是先有蛋的问题。