使用预训练的拥抱面变换器进行翻译不起作用

Translating using pre-trained hugging face transformers not working

我有一种情况,我正在尝试使用预训练的拥抱脸模型将 pandas 列文本从荷兰语翻译成英语。我的输入很简单:

Dutch_text             
Hallo, het gaat goed
Hallo, ik ben niet in orde
Whosebug is nuttig

我正在使用下面的代码翻译上面的列,我想将我的结果存储到一个新列中 ENG_Text。所以输出将如下所示:

ENG_Text             
Hello, I am good
Hi, I'm not okay
Whosebug is helpful

我使用的代码如下:

#https://huggingface.co/Helsinki-NLP for other pretrained models 
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-nl-en")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-nl-en")
input_1 = df['Dutch_text']
input_ids = tokenizer("translate English to Dutch: "+input_1, return_tensors="pt").input_ids # Batch size 1
outputs = model.generate(input_ids)
decoded = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(decoded)

如有任何帮助,我们将不胜感激!

这不是应该使用 MT 模型的方式。它不是测试模型是否可以理解指令的类似 GPT 的实验。是一个只能翻译的翻译模型,不需要添加指令"translate English to Dutch"。 (你不想反过来翻译吗?)

此外,翻译模型经过训练可以逐句翻译。如果您连接列中的所有句子,它将被视为一个句子。您需要:

  1. 遍历列并独立翻译每个句子。

  2. 将列拆分为多个批次,以便您可以并行化翻译。请注意,在这种情况下,您需要将批次中的句子填充为具有相同的长度。最简单的方法是使用分词器的 batch_encode_plus 方法。