在任意python序列上计算编辑距离。

Edit_Distance的Python项目详细描述


编辑距离

Build StatusPyPI versioncodecov

用于计算序列之间编辑距离和对齐的python模块。

我需要一种方法来计算python中序列之间的编辑距离。我没有 能够找到任何合适的库来实现这一点,所以我自己编写了一个。在那里 似乎有许多可用于计算编辑的编辑距离库 两个字符串之间的距离,但不是两个序列之间的距离。

这完全是用python编写的。这种实现可能是 在python中优化为更快。如果 在C中实现。

库API是根据difflib.sequencematcher建模的。这很相似 到difflib,除了此模块计算编辑距离(levenshtein 而不是python的difflib的ratcliff和oberhelp方法 使用。difflib“不产生最小的编辑序列,但是倾向于产生 与人的“正确外观”匹配。“

如果你觉得这个图书馆有用或有什么建议,请给我寄一个 信息。

安装和卸载

最简单的安装方法是使用pip:

pip install edit_distance

或者,您可以克隆此git repo并使用distutils安装:

git clone git@github.com:belambert/edit_distance.git
cd edit_distance
python setup.py install

使用pip卸载:

pip uninstall edit_distance

API使用

要查看用法示例,请查看difflib documentation。 有关ReadTheDocs

这需要python 2.7+,因为它使用argparse作为命令行 接口。剩下的代码对于早期版本的python应该没问题

API使用示例:

importedit_distanceref=[1,2,3,4]hyp=[1,2,4,5,6]sm=edit_distance.SequenceMatcher(a=ref,b=hyp)sm.get_opcodes()sm.ratio()sm.get_matching_blocks()

与difflib的区别

除了SequenceMatcher方法之外,distance()matches()方法 提供用于计算编辑距离和匹配数的。

sm.distance()sm.matches()

即使两个序列的比对与difflib相同, get_opcodes()get_matching_blocks()可能返回略有不同 顺序。此库返回的操作码表示单个字符 操作,因此不应跨越两个或多个字符。

<>也可以计算最大匹配数,而不是 最少编辑次数:

sm=edit_distance.SequenceMatcher(a=ref,b=hyp,action_function=edit_distance.highest_match_action)

注释

这不会在difflib中实现“垃圾”匹配功能。

贡献和行为准则

对于贡献,最好是github问题和拉取请求。适当的 建议的测试和文档。

行为准则应该是合理的,特别是 Contributor Covenant

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?