File size: 3,166 Bytes
e87b210
d3ee320
b507f98
e87b210
0bb036a
15c2e5c
b507f98
 
0f9899f
 
b507f98
 
f320f41
b507f98
d3ee320
b507f98
d3ee320
0f9899f
 
4dcbdb7
b507f98
 
 
 
 
 
0f9899f
 
 
d3ee320
0f9899f
 
 
 
b507f98
 
 
 
 
 
 
d3ee320
5af9412
d3ee320
 
5af9412
d3ee320
 
 
 
 
 
5af9412
d3ee320
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b507f98
d3ee320
b507f98
5af9412
008cf16
5af9412
f320f41
d3ee320
 
4dcbdb7
3746217
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
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
import torch

model = AutoModelForSeq2SeqLM.from_pretrained("Mamadou2727/Feriji_model")
tokenizer = AutoTokenizer.from_pretrained("facebook/m2m100_418M")
device = "cuda:0" if torch.cuda.is_available() else "cpu"
LANG_CODES = {
    "French": "fr",
    "Zarma": "yo"
}

def translate(text, candidates: int):
    """
    Translate the text from French to Zarma
    """

    src = LANG_CODES["French"]
    tgt = LANG_CODES["Zarma"]

    tokenizer.src_lang = src
    tokenizer.tgt_lang = tgt

    ins = tokenizer(text, return_tensors='pt').to(device)

    gen_args = {
        'return_dict_in_generate': True,
        'output_scores': True,
        'output_hidden_states': True,
        'length_penalty': 0.0,  # don't encourage longer or shorter output,
        'num_return_sequences': candidates,
        'num_beams': candidates,
        'forced_bos_token_id': tokenizer.lang_code_to_id[tgt]
    }

    outs = model.generate(**{**ins, **gen_args})
    output = tokenizer.batch_decode(outs.sequences, skip_special_tokens=True)

    return '\n'.join(output)

with gr.Blocks() as app:
    markdown = r"""
        # FERIJI Translator, The First French-Zarma Translator        
        <img src="https://cdn-uploads.huggingface.co/production/uploads/63cc1d4bf488db9bb3c6449e/AtOKLAaL5kt0VhRsxE0vf.png" width="500" height="300">
        
        This is a beta version of the French to Zarma translator.
            
        ## Intended Uses & Limitations        
        
        This model is intended for academic research and practical applications in machine translation. It can be used to translate French text to Zarma and vice versa. Users should note that the model's performance may vary based on the complexity and context of the input text.
            
        ## Authors:
        The project, **FERIJI**, was curated by **Elysabhete Ibrahim Amadou**, **Habibatou Abdoulaye Alfari**, **Adwoa Bremang**, **Dennis Owusu**, **Mamadou K. KEITA** and **Dr Christopher Homan**, with the aim to enhance linguistic studies for Zarma.
            
        ## Citations
            
        If you use this dataset or model in your research, please cite it as follows:
            
        @dataset{Feriji,
          author       = {Habibatou Abdoulaye Alfari, Elysabhete Ibrahim Amadou and Mamadou K. KEITA},
          title        = {Feriji, a French-Zarma Parallel Corpus},
          year         = 2023,
          publisher    = {GitHub},
          journal      = {GitHub repository},
          howpublished = {\url{https://github.com/27-GROUP/Feriji}}
        }
    """

    with gr.Row():
        gr.Markdown(markdown)
        with gr.Column():
            input_text = gr.components.Textbox(lines=7, label="Français/French", value="")
            return_seqs = gr.Slider(label="Number of return sequences", value=1, minimum=1, maximum=12, step=1)
            outputs = gr.Textbox(lines=7, label="Zarma")

            translate_btn = gr.Button("Traduis!")
            translate_btn.click(translate, inputs=[input_text, return_seqs], outputs=outputs)

app.launch(share=True)