| # 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() | |