import gradio as gr import pandas as pd # Read the lexicon 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") # Get the ARASAAC pictogram ID from the lexicon 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) # HTML content to show the pictogram images def generate_html(ids): html_content = ''' ''' for picto_id, lemma in ids: if picto_id != 0: # pictogram id exists img_url = f"https://static.arasaac.org/pictograms/{picto_id}/{picto_id}_500.png" html_content += f'''
{lemma}
{lemma}
''' else: # not found pictogram html_content += f'''
"{lemma}" is not in the lexicon
''' return html_content # Process the input of the user def process_text(input_text): tokens = input_text.strip().split() # cut the sequence into 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") input_text = gr.Textbox(label="Enter a sequence of pictogram tokens:", placeholder="Example : bonjour je appeler plan_taille") submit_btn = gr.Button("Generate", variant="secondary") output_html = gr.HTML(label="ARASAAC Pictograms") submit_btn.click(process_text, inputs=input_text, outputs=output_html) # Lancer l'application demo.launch()