机器翻译和数据处理

机器翻译(MT)

  • 将一段文本从一种语言自动翻译为另一种语言
  • 用神经网络解决这个问题通常称为神经机器翻译(NMT)
  • 主要特征:输出是单词序列而不是单个单词。 输出序列的长度可能与源序列的长度不同。

    数据预处理

  • 将数据集清洗

    • 去除特殊字符、无法处理的字符
      • 我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。 而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表不间断空白符nbsp(non-breaking space),超出gbk编码范围,是需要去除的特殊字符。

        分词

        字符串—-单词组成的列表

        建立词典

        单词组成的列表—-单词id组成的列表

        载入数据集

  • 句子长度不一致,需要用填充至最大长度

    • 计算loss时需要忽略掉填充的部分
  • 利用TensorDataset和DataLoader将数据集转化成batch的输入

    Encoder-Decoder

    encoder:输入到隐藏状态
    decoder:隐藏状态到输出
    机器翻译 - 图1

    Sequence to Sequence模型

    模型:

    训练
    机器翻译 - 图2
    预测
    机器翻译 - 图3

    具体结构:

    机器翻译 - 图4

    Beam Search

    简单greedy search:
    机器翻译 - 图5
    维特比算法:选择整体分数最高的句子(搜索空间太大) 集束搜索:
    机器翻译 - 图6