使用 TensorFlow NMT 训练中英文翻译

我在 TensorFlow 的 GitHub 中找到了 NMT 的项目,我按照上面的步骤完成了 越南语 和 英语 之间互转的训练,训练完成之后效果还可以。

后来我使用 WMT18 的 中文-英文 数据集的时候,训练的结果特别差,请问是什么原因呢?

我仿照 Vi-En 数据集的做法,用 TSU 的工具做了中文分词和词汇表,使用的 train、dev、tst 的语句数量为 3333。

我执行训练的程序如下:

python3 -m nmt.nmt
–attention=scaled_luong
–src=en --tgt=zh
–vocab_prefix=dataset/EN-ZH/vocab
–train_prefix=dataset/EN-ZH/train
–dev_prefix=dataset/EN-ZH/dev
–test_prefix=dataset/EN-ZH/tst
–out_dir=output/EN-ZH
–num_train_steps=50000
–steps_per_stats=100
–num_layers=2
–num_units=128
–dropout=0.2
–metrics=bleu,rouge,accuracy

从 Tensorboard 上看,当前的 Loss 是 20 左右,但是 accurate 始终是 0。

image

image

image


AngelZheng 于 2018-4-21 13:06

不太清楚。可能是数据集的问题?楼主要不把数据集怎么转换的或者数据集的样本发出来大家一起看看?


舟 3332 发表于 2018-4-23 20:27:14

AngelZheng:
问题暂时解决啦,是中文分词的问题。我的数据集里的中文分词效果很差,如果改成中文分字虽然结果不太好但不会特别离谱。
2018-4-26 16:03

舟 3332: 回复 AngelZheng :
赞。楼主有在用什么分词的库吗?
2018-5-2 18:13

AngelZheng: 回复 舟 3332 :
之前用的是 TSU 的分词库,和大神交流了一下说效果不好,现在一直用分字,就是每个字之间用空格隔开啦。
2018-5-15 17:42


2018-5-15

感觉是转换的部分出了问题,详细可以看看代码。


tensorfyx 发表于 2018-7-3 17:38:00