NLP: 0基础应用T5模型进行文本翻译代码实例~


前言

Google的T5模型从2019年发布到今天雄风依旧;在翻译,文本分类,智能问答,文章摘要等方面都取得SOTA地位;本文使用T5的翻译功能完成 文本从一种语言翻译到另一种语言的翻译功能,我们可以使用把模型最后输出的目标语音文本代回到google翻译器中进行进一步验证,来判断T5模型的翻译功能效果。

一、目标文本是什么?

为了方便T5模型的训练,我们这里采用两句自己定义的英文文本,当然读者也可以自己定义相关句子;本文的目标文本为英语,目标文本为法语;
【注意:输入文本为list格式,元素为str格式;同时在task_prefix 定义翻译原文语言和目标语言】
代码如下:

#suppose we have the following 2 training examples
input_sequence_2 = "My eyes fill you with love"
input_sequence_3 = "He is pretty kind that I did not expect"
input_sequence_4 = "Her eyes are blue"

然后我们把它转化为list形式

task_prefix = "translate English to French: "
input_sequences = [input_sequence_2]
input_sequences.extend([input_sequence_3, input_sequence_4])

二、模型调用步骤

1.引入库

【注意: 本文使用pytorch库】
1.1 首先在代码运行环境中导入torch库;
1.1.1 首先,保证电脑已经安装python 3.7.0 以上版本
1.1.2 然后在python环境中安装pytorch,使用如下命令

pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

1.2 在python脚本中写入引入库的相关代码,如下

from transformers import T5Tokenizer, T5ForConditionalGeneration
import torch

2.导入模型,本文使用 t5-base

tokenizer = T5Tokenizer.from_pretrained("t5-base")
model = T5ForConditionalGeneration.from_pretrained("t5-base")
#task specific parameter
max_source_length = 512

3.使用分词器对目标文本进行分词

encoding = tokenizer([task_prefix + sequence for sequence in input_sequences]
                    , padding = True
                    , return_tensors="pt").input_ids

4.对刚刚生成的分词结果进行目标语言的生成工作

outputs = model.generate(input_ids)

5.对生成的目标语言进行解码工作,就可得到目标语言的文本,并打印

result = tokenizer.batch_decode(outputs, skip_special_tokens = True)
print(result)

结果如下,

["Mes yeux vous remplissent d'amour", 'Il est assez gentil que je ne m’attendais pas à', 'Ses yeux sont bleus']

通过google检验:即再把法语翻译为英语,结果如下

在这里插入图片描述

完全一致!当然,因为法语是不分性别的,也就是他/她 不分,所以小伙伴们可能翻译的最终结果是 Her而不是His

今天的分享就到这里,后续还会分享更多NLP模型的应用和代码实例,请点赞关注!谢谢!


猜你喜欢

转载自blog.csdn.net/dylan_young/article/details/121373271