Deep learning 在OpenNMT py中进行翻译时获得对齐/注意

Deep learning 在OpenNMT py中进行翻译时获得对齐/注意,deep-learning,pytorch,machine-translation,attention-model,opennmt,Deep Learning,Pytorch,Machine Translation,Attention Model,Opennmt,在Opennmt py中进行翻译时,有人知道如何获取对齐权重吗?通常,唯一的输出是结果语句,我已经尝试为注意力权重找到调试标志或类似标志。到目前为止,我还没有成功。你可以得到关注。请注意,它与来自统计(而非神经)机器翻译的术语对齐不同 有人在讨论它。下面是讨论的一个片段。当您从模式中获得翻译时,注意事项出现在attn字段中 导入onmt 导入onmt.io 导入onmt.translate 导入onmt.ModelConstructor 从集合导入namedtuple #加载模型。 Opt=na

在Opennmt py中进行翻译时,有人知道如何获取对齐权重吗?通常,唯一的输出是结果语句,我已经尝试为注意力权重找到调试标志或类似标志。到目前为止,我还没有成功。

你可以得到关注。请注意,它与来自统计(而非神经)机器翻译的术语对齐不同

有人在讨论它。下面是讨论的一个片段。当您从模式中获得翻译时,注意事项出现在
attn
字段中

导入onmt
导入onmt.io
导入onmt.translate
导入onmt.ModelConstructor
从集合导入namedtuple
#加载模型。
Opt=namedtuple('Opt',['model','data\u type','reuse\u copy\u attn','gpu']))
opt=opt(“保存到模型的路径”,“文本”,False,0)
字段、模型、模型\u opt=onmt.ModelConstructor.load\u test\u model(
opt,{“重用副本附件”:False})
#测试数据
data=onmt.io.build\u数据集(
字段,“文本”,“路径到数据”,无,使用\u过滤器\u pred=False)
数据编辑器=onmt.io.ordereditor(
数据集=数据,设备=0,
批次大小=1,序列号=False,排序号=False,
排序(批处理=真,洗牌=假)
#翻译器
translator=onmt.translate.translator(
模型,字段,梁尺寸=5,n最佳=1,
全局(评分器=无,cuda=真)
builder=onmt.translate.TranslationBuilder(
数据,translator.fields,1,False,无)
批次=下一个(数据集)
批处理数据=转换器。翻译批处理(批处理,数据)
翻译=生成器。来自批次(批次数据)

翻译[0]。attn#我不确定这是否是一个新功能,因为几个月前我在查找对齐时没有遇到这个问题,但onmt似乎添加了一个标记
-report#u align
来随翻译一起输出单词对齐

摘自opennnmt.net-


目前,我们支持在转换基于Transformer的模型时生成单词对齐。调用translate.py时使用-report_align将以默认格式输出推断的对齐。这些对齐是根据从第二个到最后一个解码器层的注意头的平均值从argmax计算出来的。

Github线程中的任何解决方案在当前版本中都不起作用。你知道有什么方法可以看出上面的版本适用于哪一个版本吗?