File size: 2,388 Bytes
293d6e5
9c5e52a
293d6e5
9c5e52a
293d6e5
9c5e52a
293d6e5
22982b9
 
293d6e5
 
 
 
 
22982b9
 
 
 
 
 
293d6e5
22982b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9c5e52a
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
# Fine-Tuned Darija Summarization Model

This is a fine-tuned version of `Llama-3.1` for text summarization in Darija (Moroccan Arabic). The model was trained on a dataset consisting of news articles and corresponding headlines.

## Usage

```python
!pip install gradio
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("your_username/my-finetuned-darija-model")
tokenizer = AutoTokenizer.from_pretrained("your_username/my-finetuned-darija-model")

def summarize_text(article_content):
    """
    Fonction pour générer un résumé à partir du texte d'entrée.
    """
    # Preprocessing: remove unwanted characters (e.g., </)
    cleaned_article_content = article_content.replace('</', '').replace('>', '')

    # Formater le texte d'entrée avec les instructions
    input_text = f"""Below is an article written in Darija. Write a concise and accurate summary:

### Article:
{cleaned_article_content}
### Summary:
"""
    # Tokenisation et génération
    inputs = tokenizer([input_text], return_tensors="pt", truncation=True).to("cuda")
    outputs = model.generate(**inputs, max_new_tokens=50)

    # Décoder le résumé et nettoyer les tags inutiles
    summary = tokenizer.decode(outputs[0], skip_special_tokens=True)

    # Nettoyer les tokens supplémentaires (</s> ou autres)
    summary = summary.replace('</s>', '').strip()

    # Ne retourner que la partie du résumé (pas les autres sections)
    if "### Summary:" in summary:
        summary = summary.split("### Summary:")[1].strip()

    return summary

# Interface Gradio
with gr.Blocks() as demo:
    gr.Markdown("## Résumé de texte en Darija")
    gr.Markdown(
        "Entrez le contenu de l'article en Darija dans la zone ci-dessous. "
        "Un résumé sera généré et affiché."
    )

    with gr.Row():
        input_box = gr.Textbox(
            label="Contenu de l'article",
            placeholder="Entrez uniquement le contenu de l'article ici...",
            lines=10
        )
        output_box = gr.Textbox(
            label="Résumé généré",
            placeholder="Le résumé apparaîtra ici...",
            lines=5
        )

    generate_button = gr.Button("Générer le résumé")
    generate_button.click(summarize_text, inputs=input_box, outputs=output_box)

# Lancer l'application
demo.launch()