火炬中心提供预训练模型,例如:https ://pytorch.org/hub/pytorch_fairseq_translation/
这些模型可以在 python 中使用,或者与 CLI 交互。--print-alignment
使用 CLI,可以使用标志进行对齐。安装fairseq(和 pytorch)后,以下代码在终端中工作
curl https://dl.fbaipublicfiles.com/fairseq/models/wmt14.v2.en-fr.fconv-py.tar.bz2 | tar xvjf -
MODEL_DIR=wmt14.en-fr.fconv-py
fairseq-interactive \
--path $MODEL_DIR/model.pt $MODEL_DIR \
--beam 5 --source-lang en --target-lang fr \
--tokenizer moses \
--bpe subword_nmt --bpe-codes $MODEL_DIR/bpecodes \
--print-alignment
在 python 中,可以指定关键字 argsverbose
和print_alignment
:
import torch
en2fr = torch.hub.load('pytorch/fairseq', 'transformer.wmt14.en-fr', tokenizer='moses', bpe='subword_nmt')
fr = en2fr.translate('Hello world!', beam=5, verbose=True, print_alignment=True)
但是,这只会将对齐输出为日志消息。而对于 fairseq 0.9,它似乎被破坏并导致错误消息(问题)。
有没有办法从 python 代码访问对齐信息(甚至可能是完整的注意力矩阵)?