|
|
|
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'] |
|
tagged_words = analyze_sentence(sentence) |
|
return sentence, [word for word, _ in tagged_words] |
|
|
|
def analyze_sentence(sentence): |
|
doc = nlp(sentence) |
|
return [(token.text, token.pos_) for token in doc] |
|
|
|
def check_answer(sentence, *args): |
|
tagged_words = analyze_sentence(sentence) |
|
correct_answer = [tag for word, tag in tagged_words] |
|
user_answer = list(args) |
|
if user_answer == correct_answer: |
|
return 'Correcto!' |
|
else: |
|
return 'Incorrecto. La respuesta correcta es: ' + str(correct_answer) |
|
|
|
generate_iface = gr.Interface(fn=generate_sentence, |
|
inputs='number', |
|
outputs=['textbox', 'textbox']) |
|
|
|
check_iface = gr.Interface(fn=check_answer, |
|
inputs=['textbox'] + [gr.inputs.Dropdown(choices=pos_tags) for _ in range(10)], |
|
outputs='textbox') |
|
|
|
generate_iface.launch() |
|
check_iface.launch() |
|
|