【NLP】斯密斯

您所在的位置:网站首页 pythontransform详解 【NLP】斯密斯

【NLP】斯密斯

2023-05-27 18:52| 来源: 网络整理| 查看: 265

一、说明

         在生物技术中,需要用到局部序列对齐 (LSA),所以使用 Smith-Waterman 算法在较长的子字符串 a 中找到部分匹配的子字符串 b。同样,在NLP中,也存在串比较问题,比如语音序列。因为这里用 Python 编码的,所以我们确信已经有很多实现可以使用了。我确实找到了一些代码,然而,有些实现是不完整的,这里拿来一个可以跑通的。我没有测试第二个实现,留给读者实现。

        因此,我开始了自己实现定位。我想要的是一些易于使用的功能,比如

start, end = smith_waterman(string_a, string_b)

        找出某些版本的 string_b(包括间隙和删除)在 string_a 中的开始和结束位置。

1.1 实现评分矩阵(Scoring matrix)

        为了找到 b 与 a 的局部对齐,Smith-Waterman 首先计算评分矩阵。以下代码使用线性间隙成本为两个字符串 a 和 b 计算此矩阵。出于性能原因,我选择了 NumPy 数组的实现。可以更改匹配分数和差距成本的值。默认值对应于维基百科中的示例:

import itertools import numpy as np def matrix(a, b, match_score=3, gap_cost=2): H = np.zeros((len(a) + 1, len(b) + 1), np.int) for i, j in it


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3