File size: 3,018 Bytes
a1d714c e19a201 19e19cd a1d714c c954467 e19a201 a1d714c e19a201 a1d714c e19a201 a1d714c e19a201 a1d714c e19a201 a1d714c e19a201 a1d714c e19a201 19e19cd 7c19dd7 19e19cd 9468f48 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
---
library_name: transformers
tags:
- seq2seq
license: apache-2.0
datasets:
- Helsinki-NLP/europarl
- Helsinki-NLP/opus-100
language:
- en
- it
base_model:
- bigscience/mt0-small
pipeline_tag: translation
metrics:
- bleu
---
## 🍀 Quadrifoglio - A small model for English -> Italian translation
Quadrifoglio is an encoder-decoder transformer model for English-Italian text translation based on `bigscience/mt0-small`. It was trained on the `en-it` section of `Helsinki-NLP/opus-100` and `Helsinki-NLP/europarl`.
## Usage
```python
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
# Load model and tokenizer from checkpoint directory
tokenizer = AutoTokenizer.from_pretrained("LeonardPuettmann/mt0-Quadrifoglio-mt-en-it")
model = AutoModelForSeq2SeqLM.from_pretrained("LeonardPuettmann/mt0-Quadrifoglio-mt-en-it")
def generate_response(input_text):
input_ids = tokenizer("translate English to Italian:" + input_text, return_tensors="pt").input_ids
output = model.generate(input_ids, max_new_tokens=256)
return tokenizer.decode(output[0], skip_special_tokens=True)
text_to_translate = "I would like a cup of green tea, please."
response = generate_response(text_to_translate)
print(response)
```
As this model is trained on translating sentence pairs, it is best to split longer text into individual sentences, ideally using SpaCy:
```python
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import spacy
# First, install spaCy and the English language model if you haven't already
# !pip install spacy
# !python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")
tokenizer = AutoTokenizer.from_pretrained("LeonardPuettmann/mt0-Quadrifoglio-mt-en-it")
model = AutoModelForSeq2SeqLM.from_pretrained("LeonardPuettmann/mt0-Quadrifoglio-mt-en-it")
def generate_response(input_text):
input_ids = tokenizer("translate Italian to English: " + input_text, return_tensors="pt").input_ids
output = model.generate(input_ids, max_new_tokens=256)
return tokenizer.decode(output[0], skip_special_tokens=True)
text = "How are you doing? Today is a beautiful day. I hope you are doing fine."
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]
sentence_translations = []
for i, sentence in enumerate(sentences):
sentence_translation = generate_response(sentence)
sentence_translations.append(sentence_translation)
full_translation = " ".join(sentence_translations)
print(full_translation)
```
## Evaluation
Done on the Opus 100 test set.
### BLEU
| | Quadrifoglio (this model) | mt0-small| DeepL |
|--------------|-------------------------------|----------|--------|
| BLEU Score | 0.4816 | 0.0159 | 0.5210 |
| Precision 1 | 0.7305 | 0.2350 | 0.7613 |
| Precision 2 | 0.5413 | 0.0290 | 0.5853 |
| Precision 3 | 0.4289 | 0.0076 | 0.4800 |
| Precision 4 | 0.3417 | 0.0013 | 0.3971 |
|