/CL_HW2_NMT

Homework2 of Computational Liguistics -- NMT(en-ch)

Primary LanguagePython

CL_HW2_NMT

Homework2 of Computational Linguistics -- NMT(en-ch)

数据处理

  1. 分词

    • 工具:sentencepiece包

    • 预处理:./data/get_corpus.py抽取train、dev和test中双语语料,分别保存到corpus.encorpus.ch中,每行一个句子

    • 训练分词模型:./tokenizer/tokenize.py中调用了sentencepiece.SentencePieceTrainer.Train()方法,利用corpus.encorpus.ch中的语料训练分词模型,训练完成后会在./tokenizer文件夹下生成chn.model,chn.vocabeng.modeleng.vocab,其中.model.vocab分别为模型文件和对应的词表

    • 分词模型的使用(以中文为例):

      import sentencepiece as spm
      sp_chn = spm.SentencePieceProcessor()
      sp_chn.Load('{}.model'.format("./tokenizer/chn"))
      sentence = "美国总统特朗普"
      print(sp_chn.EncodeAsIds(sentence))

      输出

      [12907, 277]
      

TODO

  1. 模型的transformer部分直接使用了如下repo的实现,但存在一些问题。比如:
    • 该模型(好像)限制了输入输出的sequence(分词后的)长度保持一致,不然会报错;
    • 所有batch的sequece都必须pad到max_seq_length而不是batch里的最大值
  2. evaluate部分,BLUE