A tradução é a tarefa de converter um texto de um idioma em um texto de outro idioma.
Um conjunto de dados mais clássico para tarefas de tradução é o conjunto de dados WMT de inglês para alemão, que usa o inglês como entrada e corresponde ao alemão como saída (também pode ser revertido quando você mesmo o usa).
usar pipeline
Ele pode ser implementado rapidamente com o seguinte código:
from transformers import pipeline
translator = pipeline("translation_en_to_de")
print(translator("Hugging Face is a technology company based in New York and Paris", max_length=40))
resultado da operação:
[{
'translation_text': 'Hugging Face ist ein Technologieunternehmen mit Sitz in New York und Paris.'}]
Como o pipeline de tradução PreTrainedModel.generate()
depende do método, podemos max_length
substituir o método padrão conforme acima.
Usando modelos e tokenizadores de texto
As etapas específicas são as seguintes:
- Instancie um tokenizador e modelo de texto. Uso geral
BERT
ouT5
modelo. - Defina um texto a ser traduzido.
- Adicione
T5
o prefixo especial para a traduçãotranslate English to German:
. - Use
PreTrainedModel.generate()
o método para traduzir.
Código de amostra:
cache_dir="./transformersModels/summarization"
"""
,cache_dir = cache_dir
"""
from transformers import AutoModelWithLMHead, AutoTokenizer
model = AutoModelWithLMHead.from_pretrained("t5-base",cache_dir = cache_dir, return_dict=True)
tokenizer = AutoTokenizer.from_pretrained("t5-base",cache_dir = cache_dir)
inputs = tokenizer.encode("translate English to German: 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[0]))
resultado da operação:
Hugging Face ist ein Technologieunternehmen mit Sitz in New York und Paris.
Consistente com os resultados do pipeline.