字符串转换的随机编辑距离对齐器
项目描述
麦克斯韦 👹
麦克斯韦是一个用于学习源和目标字母表之间随机编辑距离(SED)的Python库,用于字符串转换。
给定源和目标字符串对的语料库,它使用期望最大化算法来学习编辑操作(复制、替换、删除、插入)的对数概率权重,这些操作最小化了源和目标字符串之间的编辑次数。然后可以使用维特比解码通过这些权重对未知字符串进行编辑。
安装
首先安装依赖项
pip install -r requirements.txt
然后安装
pip install .
然后可以像常规Python模块一样导入
import maxwell
用法
SED训练可以通过命令行工具或作为Python依赖项进行。
对于命令行使用,运行
maxwell-train \
--train /path/to/train/data \
--output /path/to/output/file \
--epochs "${NUM_EPOCHS}"
作为一个库对象,您可以使用 StochasticEditDistance
类来传递任何源-目标对的可迭代序列进行训练。然后可以使用 write_params
方法保存学习到的编辑权重。
from maxwell import sed
aligner = sed.StochasticEditDistance.fit_from_data(
training_samples, NUM_EPOCHS
)
aligner.params.write_params("/path/to/output/file")
训练完成后,可以使用 action_sequence
方法从文件中加载参数来计算字符串之间的最佳编辑,该方法返回一个包含学习到的最佳序列及其所赋予的权重的元组。
from maxwell import sed
params = sed.ParamsDict.read_params("/path/to/learned/parameters")
aligner = sed.StochasticEditDistance(params)
optimal_sequence, optimal_cost = aligner.action_sequence(source, target)
如果只需要权重而没有动作,则可以使用 action_sequence_cost
方法。
optimal_cost = aligner.action_sequence_cost(source, target)
相反,可以使用 action_cost
方法评估单个动作。
action_cost = aligner.action_cost(action)
详细信息
数据
默认数据格式基于 SIGMORPHON 2017 共享任务。
source target ...
也就是说,第一列是源(词元)和第二列是目标。
如果格式不同,可以调用 --source-col
和 --target-col
标志。例如,对于 SIGMORPHON 2016 共享任务的数据格式
source ... target
将使用标志 --target-col 3
来使用第三列作为目标字符串(请注意使用基于1的索引)。
编辑动作
编辑权重以 ParamsDict
对象的形式维护,这是一个包含三个字典和一个浮点数的 dataclass。以下是对字典及其索引的说明
delta_sub
键:源字母表和目标字母表的元组。值:所有非等效源-目标对的替换权重。如果源符号等于目标符号,则使用单独的复制概率。delta_del
键:源字符串字母表中的所有符号。表示从字符串中删除。值:从字符串中删除源符号的删除权重。delta_ins
键:目标字符串字母表中的所有符号。表示向字符串中插入。值:向字符串中引入目标符号的插入权重。delta_eos
表示字符串终止概率的浮点值。
在 Python 中,可以通过 StochasticEditDistance
对象的 params
属性访问这些值。
参考文献
Dempster, A.,Laird, N. 和 Rubin, D. 1977. 通过 EM 算法从不完整数据中估计最大似然。 皇家统计学会,系列 B 30(1): 1-38。
Ristad, E. S. 和 Yianilos, P. N. 1998. 学习字符串编辑距离。 IEEE 信号处理汇刊 20(5): 522-532。
项目详情
下载文件
下载您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
构建发行版
maxwell-0.2.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 874de36badaba03b841e4e0ea1e71d626bc1d9c09ec9541471f51e7b0fddd2bf |
|
MD5 | 916db67a289b30f9637a9e80fd9ce84b |
|
BLAKE2b-256 | 1b0325a4cf718c31904a092a55a6d176e0398d16572d79fd4cc786590d20647f |