Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
# Lecture du lexique | |
def read_lexicon(lexicon_file): | |
df = pd.read_csv(lexicon_file, sep='\t') | |
df['keyword_no_cat'] = df['lemma'].str.split(' #').str[0].str.strip().str.replace(' ', '_') | |
return df | |
lexicon = read_lexicon("lexicon.csv") | |
# Récupération de l'ID du pictogramme depuis le lexique | |
def get_id_picto_from_predicted_lemma(df_lexicon, lemma): | |
lemma = lemma.strip().lower() | |
if lemma.endswith("!"): | |
lemma = lemma[:-1] | |
id_picto = df_lexicon.loc[df_lexicon['keyword_no_cat'] == lemma, 'id_picto'].tolist() | |
return (id_picto[0], lemma) if id_picto else (0, lemma) | |
# Génération de contenu HTML pour afficher les pictogrammes | |
def generate_html(ids): | |
html_content = ''' | |
<style> | |
figure { | |
display: inline-block; | |
text-align: center; | |
font-family: Arial, sans-serif; | |
margin: 10px; | |
} | |
figcaption { | |
color: black; | |
background-color: white; | |
border-radius: 5px; | |
margin-top: 5px; | |
padding: 2px; | |
} | |
img { | |
background-color: white; | |
margin: 0; | |
padding: 0; | |
border-radius: 6px; | |
box-shadow: 0 2px 4px rgba(0,0,0,0.2); | |
} | |
</style> | |
''' | |
for picto_id, lemma in ids: | |
if picto_id != 0: # pictogramme trouvé | |
img_url = f"https://static.arasaac.org/pictograms/{picto_id}/{picto_id}_500.png" | |
html_content += f''' | |
<figure> | |
<img src="{img_url}" alt="{lemma}" width="100" height="100"/> | |
<figcaption>{lemma}</figcaption> | |
</figure> | |
''' | |
else: # pictogramme non trouvé | |
html_content += f''' | |
<figure> | |
<figcaption>Token "{lemma}" non trouvé dans le lexique</figcaption> | |
</figure> | |
''' | |
return html_content | |
# Fonction principale de traitement | |
def process_text(input_text): | |
tokens = input_text.strip().split() # Découper l'entrée utilisateur en tokens | |
pictogram_ids = [get_id_picto_from_predicted_lemma(lexicon, token) for token in tokens] | |
return generate_html(pictogram_ids) | |
# Configuration de l'interface Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("## Visualize Pictograms Application") | |
gr.Markdown("Saisissez une phrase pour voir les pictogrammes correspondants.") | |
# Zone de texte et résultats dans une colonne | |
with gr.Column(): | |
input_text = gr.Textbox(label="Entrez votre texte", placeholder="Exemple : bonjour comment ça va") | |
output_html = gr.HTML(label="Résultats") | |
# Bouton pour afficher les résultats | |
submit_btn = gr.Button("Afficher les pictogrammes") | |
submit_btn.click(process_text, inputs=input_text, outputs=output_html) | |
# Lancer l'application | |
demo.launch() | |