import gradio as gr import spacy from transformers import pipeline nlp = spacy.load('es_core_news_sm') text_generator = pipeline('text-generation', model='gpt2') pos_tags = ['ADJ', 'ADP', 'ADV', 'AUX', 'CONJ', 'DET', 'INTJ', 'NOUN', 'NUM', 'PART', 'PRON', 'PROPN', 'PUNCT', 'SCONJ', 'SYM', 'VERB', 'X'] def generate_sentence(): result = text_generator('')[0] sentence = result['generated_text'] return sentence def analyze_sentence(sentence): doc = nlp(sentence) tagged_words = [(token.text, token.pos_) for token in doc] return tagged_words def check_answer(sentence, answer): tagged_words = analyze_sentence(sentence) correct_answer = [tag for word, tag in tagged_words] if answer == correct_answer: return 'Correcto!' else: return 'Incorrecto. La respuesta correcta es: ' + str(correct_answer) def process_form(input_dict): answer = [input_dict[word] for word in sorted(input_dict.keys())] return check_answer(sentence, answer) sentence = generate_sentence() tagged_words = analyze_sentence(sentence) inputs = {word: gr.inputs.Dropdown(choices=pos_tags) for word, tag in tagged_words} inputs['submit'] = gr.inputs.Button(label='Submit') outputs = gr.outputs.Textbox() iface = gr.Interface(fn=process_form, inputs=inputs, outputs=outputs) iface.launch()