对应论文:Neural Machine Translation of Rare Words with Subword Units
实现代码:https://github.com/rsennrich/subword-nmt
执行过程分为BPE词表学习过程和词表应用两个过程,
词表学习过程从训练数据中获取指定词表规模的高频子节对:
subword-nmt learn-bpe -s {num_operations} < {train_file} > {codes_file}
num_operations为迭代步数,即要选取的高频字节对个数;
train_file为训练文件;
codes_file为词表文件;
词表应用过程则是把学得的BPE词表应用到目标数据上,把目标数据转换成BPE格式:
subword-nmt apply-bpe -c {codes_file} < {test_file} > {out_file}
codes_file为BPE词表文件;
test_file为源文件;
out_file为BPE转换后的文件;
经过BPE过程拆分后的原词变为以@@空格分隔的BPE词
还原BPE文件到原始文件:
sed -r 's/(@@ )|(@@ ?$)//g'