Spaces:
Sleeping
Sleeping
Upload 4 files
Browse files- app.py +16 -0
- model.py +15 -0
- requirements.txt +3 -0
- translator.py +38 -0
app.py
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from translator import traduzir_comparar
|
3 |
+
|
4 |
+
demo = gr.Interface(
|
5 |
+
fn=traduzir_comparar,
|
6 |
+
inputs=gr.Textbox(label="Texto em Inglês", placeholder="Digite a frase em inglês aqui..."),
|
7 |
+
outputs=gr.Textbox(label="Tradução"),
|
8 |
+
title="Comparação de Traduções",
|
9 |
+
description="""Insira uma frase em inglês para visualizar a tradução gerada pelo modelo original e pelo modelo após passar por fine-tuning com textos de documentações técnicas:\n
|
10 |
+
Modelo original: Helsinki-NLP/opus-mt-tc-big-en-pt\n
|
11 |
+
Modelo fine-tuned: westronai/translation-en-pt""",
|
12 |
+
theme=gr.themes.Monochrome()
|
13 |
+
)
|
14 |
+
|
15 |
+
if __name__ == "__main__":
|
16 |
+
demo.launch()
|
model.py
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from transformers import MarianMTModel, MarianTokenizer
|
2 |
+
|
3 |
+
def carrega_modelo(nome_modelo: str) -> tuple:
|
4 |
+
"""
|
5 |
+
Carrega um modelo de tradução pré-treinado e seu tokenizer.
|
6 |
+
|
7 |
+
Args:
|
8 |
+
nome_modelo (str): Nome do modelo pré-treinado a ser carregado.
|
9 |
+
|
10 |
+
Returns:
|
11 |
+
tuple: Uma tupla contendo o tokenizer e o modelo de tradução.
|
12 |
+
"""
|
13 |
+
tokenizer = MarianTokenizer.from_pretrained(nome_modelo)
|
14 |
+
model = MarianMTModel.from_pretrained(nome_modelo)
|
15 |
+
return (tokenizer, model)
|
requirements.txt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
gradio==4.44.0
|
2 |
+
transformers==4.44.2
|
3 |
+
sentencepiece==0.2.0
|
translator.py
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from model import carrega_modelo
|
2 |
+
|
3 |
+
tokenizador_original, modelo_original = carrega_modelo('Helsinki-NLP/opus-mt-tc-big-en-pt')
|
4 |
+
tokenizador_finetuned, modelo_finetuned = carrega_modelo('westronai/translation-en-pt')
|
5 |
+
|
6 |
+
def traduz_sentenca(model, tokenizer, texto_ingles: str):
|
7 |
+
"""
|
8 |
+
Traduz uma sentença do inglês para o português usando um modelo de tradução.
|
9 |
+
|
10 |
+
Args:
|
11 |
+
model: O modelo de tradução pré-treinado.
|
12 |
+
tokenizer: O tokenizer responsável por preparar o texto.
|
13 |
+
texto_ingles (str): A sentença em inglês que será traduzida.
|
14 |
+
|
15 |
+
Returns:
|
16 |
+
dict: Dicionário com a sentença original e sua tradução.
|
17 |
+
"""
|
18 |
+
tokens = tokenizer(texto_ingles, return_tensors="pt", padding=True)
|
19 |
+
translated = model.generate(**tokens)
|
20 |
+
texto_portugues = tokenizer.decode(translated[0], skip_special_tokens=True)
|
21 |
+
return {
|
22 |
+
'texto_ingles': texto_ingles,
|
23 |
+
'texto_portugues': texto_portugues
|
24 |
+
}
|
25 |
+
|
26 |
+
def traduzir_comparar(texto_ingles):
|
27 |
+
"""
|
28 |
+
Compara as traduções geradas pelo modelo original e pelo modelo fine-tuned.
|
29 |
+
|
30 |
+
Args:
|
31 |
+
texto_ingles (str): O texto em inglês a ser traduzido.
|
32 |
+
|
33 |
+
Returns:
|
34 |
+
str: String formatada contendo as traduções de ambos os modelos.
|
35 |
+
"""
|
36 |
+
traducao_original = traduz_sentenca(modelo_original, tokenizador_original, texto_ingles)
|
37 |
+
traducao_finetuned = traduz_sentenca(modelo_finetuned, tokenizador_finetuned, texto_ingles)
|
38 |
+
return f"Modelo Original: {traducao_original['texto_portugues']}\n\nModelo Fine-Tuned: {traducao_finetuned['texto_portugues']}"
|