机器翻译:谷歌翻译是如何对几乎所有语言进行翻译的?( 七 )

我们想让输出内容为法语的单词序列 。 因此需要将整数转换回单词 。 我们将为输入和输出创建新词典 , 其中键为整数 , 对应的值为单词 。
idx2word_input = {v:k for k, v inword2idx_inputs.items()}idx2word_target = {v:k for k, v inword2idx_outputs.items()}该方法将接受带有输入填充序列的英语句子(整数形式) , 并返回法语译文 。
deftranslate_sentence(input_seq):states_value = http://kandian.youth.cn/index/encoder_model.predict(input_seq)target_seq = np.zeros((1, 1))target_seq[0, 0] =word2idx_outputs['']eos = word2idx_outputs['']output_sentence = []for _ inrange(max_out_len):output_tokens, h, c = decoder_model.predict([target_seq] + states_value)idx = np.argmax(output_tokens[0, 0, :])if eos == idx:breakword =''if idx >0:word =idx2word_target[idx]output_sentence.append(word)target_seq[0, 0] = idxstates_value = http://kandian.youth.cn/index/[h, c]return' '.join(output_sentence)预测
为测试该模型性能 , 从input_sentences列表中随机选取一个句子 , 检索该句子的对应填充序列 , 并将其传递给translate_sentence()方法 。 该方法将返回翻译后的句子 。
i = np.random.choice(len(input_sentences))input_seq=encoder_input_sequences[i:i+1]translation=translate_sentence(input_seq)print('Input Language: ', input_sentences[i])print('Actualtranslation : ', output_sentences[i])print('Frenchtranslation : ', translation)结果:
机器翻译:谷歌翻译是如何对几乎所有语言进行翻译的?文章插图
很成功!该神经网络翻译模型成功地将这么多句子译为了法语 。 大家也可以通过谷歌翻译进行验证 。 当然 , 并非所有句子都能被正确翻译 。 为进一步提高准确率 , 大家可以搜索“注意力”机制(Attention mechanism) , 将其嵌入编码器-解码器结构 。
机器翻译:谷歌翻译是如何对几乎所有语言进行翻译的?文章插图
图源:unsplash
大家可以从manythings.org上面下载德语、印地语、西班牙语、俄语、意大利语等多种语言的数据集 , 并构建用于语言翻译的神经网络翻译模型 。
神经机器翻译(NMT)是自然语言处理领域中的一个相当高级的应用 , 涉及非常复杂的架构 。 本文阐释了结合长短期记忆层进行Seq2Seq学习的编码器-解码器模型的功能 。 编码器是一种长短期记忆 , 用于编码输入语句 , 而解码器则用于解码输入内容并生成对应的输出内容 。
机器翻译:谷歌翻译是如何对几乎所有语言进行翻译的?文章插图
留言点赞关注
我们一起分享AI学习与发展的干货
如转载 , 请后台留言 , 遵守转载规范


推荐阅读