Как перевести с китайского на английский с помощью HuggingFace?

Я хочу переводить с китайского на английский с помощью трансформаторов HuggingFace, используя предварительно обученный "xlm-mlm-xnli15-1024"модель. В этом руководстве показано, как это сделать с английского на немецкий.

Я пробовал следовать руководству, но в нем не подробно описано, как вручную изменить язык или декодировать результат. Я не знаю, с чего начать. Извините, что этот вопрос не может быть более конкретным.

Вот что я пробовал:

from transformers import AutoModelWithLMHead, AutoTokenizer
base_model = "xlm-mlm-xnli15-1024"
model = AutoModelWithLMHead.from_pretrained(base_model)
tokenizer = AutoTokenizer.from_pretrained(base_model)

inputs = tokenizer.encode("translate English to Chinese: Hugging Face is a technology company based in New York and Paris", return_tensors="pt")
outputs = model.generate(inputs, max_length=40, num_beams=4, early_stopping=True)

print(tokenizer.decode(outputs.tolist()[0]))
'<s>translate english to chinese : hugging face is a technology company based in new york and paris </s>china hug ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™ ™'

3 ответа

Это может быть полезно. https://huggingface.co/Helsinki-NLP/opus-mt-zh-en

      import transformers
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-zh-en")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-zh-en")
text ='央视春晚,没有最烂,只有更烂'
tokenized_text = tokenizer.prepare_seq2seq_batch([text], return_tensors='pt')
translation = model.generate(**tokenized_text)
translated_text = tokenizer.batch_decode(translation, skip_special_tokens=False)[0]

Модель, которую вы упоминаете, xlm-mlm-xnli15-1024 можно использовать для перевода, но не так, как показано в предоставленной вами ссылке.

Ссылка предназначена для модели Т5. В модели XLM вы загружаете только исходное предложение, но вам нужно добавить встраивание языка. Это объясняется в учебнике для многоязычных моделей. Также обратите внимание, что эта модель XLM в первую очередь предназначена для обеспечения межъязыкового представления последующих задач, поэтому вы не можете ожидать очень хорошего качества перевода.

Насколько я понимаю, в конвейере HuggingFace доступны только три языка: английский-немецкий, английский-французский и англо-румынский. Если вы хотите использовать другие типы языковых переводов, проверьте модели MarianMT в репозитории HuggingFace.