语境
我正在通过 Python 使用 MarianMT von Huggingface 将文本从源语言翻译成目标语言。
预期行为
我将一个序列输入到 MarianMT 模型中,然后将该序列翻译回来。为此,我使用了相应的语言模型和分词器。我输入的所有句子也都回来了。句子被视为一个序列。
当前行为
根据语言模型,模型不会翻译所有内容,而只会返回部分内容。在此示例中,缺少最后一句:
原文(德语): Ein Nilpferd lief im Dschungel rum und musste aufs WC。Da traf es einen Kakadu und fragte nach dem Weg。Der sagte wenn du Kaka musst, dann pass mal ganz kurz auf。Ich sag dir wo du hanghen musst,ich kenn mich hier gut aus。
结果(英文): 一头河马在丛林里跑来跑去,不得不上厕所。有一只凤头鹦鹉问路。他说,如果你非要卡卡,那就留心一分钟。我会告诉你你必须去哪里,我知道我在这里的路。
结果(荷兰语): Een nijlpaard liep rond in de Jungle en moest naar het 厕所... en kaketoe vroeg naar de weg... die zei dat als je Kaka moest, ik even moest oppassen。
当前代码
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
def translate_text(input, source, target):
# Prepare output
output = ""
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-" + source + "-" + target)
tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-" + source + "-" + target)
inputs = tokenizer.encode(input[:512], return_tensors="pt", padding='longest')
outputs = model.generate(inputs, max_length=4000, num_beams=4, early_stopping=True)
for t in [tokenizer.convert_ids_to_tokens(s) for s in outputs.tolist()[0]]:
output = output + t.replace("▁", " ").replace("</s>", "")
output.replace("<pad>", "")
return output
print(translate_text("Ein Nilpferd lief im Dschungel rum und musste aufs WC. Da traf es einen Kakadu und fragte nach dem Weg. Der sagte wenn du Kaka musst, dann pass mal ganz kurz auf. Ich sag dir wo du hingehen musst, ich kenn mich hier gut aus.", "de", "nl"))
print(translate_text("Ein Nilpferd lief im Dschungel rum und musste aufs WC. Da traf es einen Kakadu und fragte nach dem Weg. Der sagte wenn du Kaka musst, dann pass mal ganz kurz auf. Ich sag dir wo du hingehen musst, ich kenn mich hier gut aus.", "de", "en"))
需要帮助
我想念什么?为什么缺少一些序列部分?