5个版本
0.2.3 | 2022年8月22日 |
---|---|
0.2.2 | 2020年5月11日 |
0.2.1 | 2018年5月19日 |
0.1.1 | 2018年3月18日 |
0.1.0 | 2018年3月9日 |
在 算法 中排名第 631
每月下载量 724
在 11 个 crate 中使用(直接使用 3 个)
36KB
857 代码行
seqalign
简介
此crate实现了基于编辑操作的常用序列对齐方法。已有多个crate可以计算编辑距离,但据我所知,没有一个crate支持以下所有seqalign功能:
- 适用于任何类型的切片。
- 可以返回编辑距离和编辑脚本/对齐。
- 可以扩展以支持新的度量。
示例
use seqalign::Align;
use seqalign::measures::LevenshteinDamerau;
let incorrect = &['t', 'p', 'y', 'o'];
let correct = &['t', 'y', 'p', 'o', 's'];
let measure = LevenshteinDamerau::new(1, 1, 1, 1);
let alignment = measure.align(incorrect, correct);
// Get the edit distance
assert_eq!(2, alignment.distance());
// Get the edit script.
use seqalign::measures::LevenshteinDamerauOp;
use seqalign::op::IndexedOperation;
assert_eq!(vec![
IndexedOperation::new(LevenshteinDamerauOp::Match, 0, 0),
IndexedOperation::new(LevenshteinDamerauOp::Transpose(1), 1, 1),
IndexedOperation::new(LevenshteinDamerauOp::Match, 3, 3),
IndexedOperation::new(LevenshteinDamerauOp::Insert(1), 4, 4)
], alignment.edit_script());