Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import csv | |
| import os | |
| from datetime import datetime | |
| import uuid | |
| DOMAINES = ["Santé", "Éducation", "Numérique", "Agriculture", "Politique", "Autre"] | |
| LANGUES = ["Français", "Arabe tchadien", "Sara", "Ngambay", "Autre"] | |
| TYPES = ["Texte brut", "Question-réponse", "Résumé", "Dialogue"] | |
| FICHIER_SORTIE = "contributions.csv" | |
| def sauvegarder_contribution(texte, domaine, langue, source, type_contenu, contributeur, consentement): | |
| if not texte or not texte.strip(): | |
| return "⚠️ Le champ texte ne peut pas être vide." | |
| if not consentement: | |
| return "⚠️ Vous devez accepter les conditions de contribution pour soumettre." | |
| nouvelle_ligne = { | |
| "id": str(uuid.uuid4())[:8], | |
| "texte": texte.strip(), | |
| "domaine": domaine, | |
| "langue": langue, | |
| "source": source if source else "contribution directe", | |
| "type": type_contenu, | |
| "contributeur": contributeur if contributeur else "anonyme", | |
| "date_collecte": datetime.now().strftime("%Y-%m-%d"), | |
| "licence": "CC-BY-SA-4.0" | |
| } | |
| fichier_existe = os.path.isfile(FICHIER_SORTIE) | |
| with open(FICHIER_SORTIE, mode="a", newline="", encoding="utf-8") as f: | |
| writer = csv.DictWriter(f, fieldnames=nouvelle_ligne.keys()) | |
| if not fichier_existe: | |
| writer.writeheader() | |
| writer.writerow(nouvelle_ligne) | |
| return "✅ Merci ! Votre contribution a été enregistrée et sera relue par l'équipe CIAT avant intégration." | |
| with gr.Blocks(title="CIAT Dataset - Contribuer") as demo: | |
| gr.Markdown(""" | |
| # 🇹🇩 Contribuer au CIAT Dataset Tchad | |
| Aidez-nous à construire un corpus public multilingue pour entraîner un modèle de langue tchadien. | |
| Toute contribution est relue par l'équipe CIAT avant intégration définitive. | |
| """) | |
| with gr.Row(): | |
| with gr.Column(): | |
| texte = gr.Textbox( | |
| label="Votre texte", | |
| placeholder="Collez ou écrivez votre contribution ici...", | |
| lines=8 | |
| ) | |
| domaine = gr.Dropdown(DOMAINES, label="Domaine", value="Numérique") | |
| langue = gr.Dropdown(LANGUES, label="Langue", value="Français") | |
| type_contenu = gr.Dropdown(TYPES, label="Type de contenu", value="Texte brut") | |
| source = gr.Textbox(label="Source (optionnel)", placeholder="Ex : rédaction originale, traduction, article...") | |
| contributeur = gr.Textbox(label="Votre pseudonyme (optionnel, laissez vide pour anonyme)") | |
| consentement = gr.Checkbox( | |
| label="J'accepte que ce contenu soit publié sous licence CC-BY-SA-4.0 et utilisé pour entraîner des modèles de langage." | |
| ) | |
| bouton = gr.Button("Soumettre ma contribution", variant="primary") | |
| with gr.Column(): | |
| resultat = gr.Textbox(label="Statut", interactive=False) | |
| gr.Markdown(""" | |
| ### Règles de contribution | |
| - Ne soumettez que du contenu dont vous détenez les droits | |
| - Pas de contenu diffamatoire ou de désinformation | |
| - Pas de données personnelles ou médicales identifiables | |
| - Précisez la langue exacte de votre texte | |
| """) | |
| bouton.click( | |
| fn=sauvegarder_contribution, | |
| inputs=[texte, domaine, langue, source, type_contenu, contributeur, consentement], | |
| outputs=resultat | |
| ) | |
| demo.launch() | |