跳转到主要内容

字符串转换的随机编辑距离对齐器

项目描述

麦克斯韦 👹

PyPI version Supported Python versions CircleCI

麦克斯韦是一个用于学习源和目标字母表之间随机编辑距离(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。以下是对字典及其索引的说明

  1. delta_sub 键:源字母表和目标字母表的元组。值:所有非等效源-目标对的替换权重。如果源符号等于目标符号,则使用单独的复制概率。
  2. delta_del 键:源字符串字母表中的所有符号。表示从字符串中删除。值:从字符串中删除源符号的删除权重。
  3. delta_ins 键:目标字符串字母表中的所有符号。表示向字符串中插入。值:向字符串中引入目标符号的插入权重。
  4. 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 (16.5 kB 查看哈希值)

上传时间

构建发行版

maxwell-0.2.4-py3-none-any.whl (14.7 kB 查看哈希值)

上传时间 Python 3

支持