File size: 1,666 Bytes
c2fc6b8 a8bb7b0 b09df44 c2fc6b8 a8bb7b0 c2fc6b8 a8bb7b0 dbcf61e c2fc6b8 9a2d9be b09df44 c2fc6b8 32bf464 c2fc6b8 32bf464 a8bb7b0 b09df44 a8bb7b0 c2fc6b8 a8bb7b0 9a2d9be c2fc6b8 32bf464 dbcf61e b09df44 dbcf61e c2fc6b8 4af357b c2fc6b8 dbcf61e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
## app.py ##
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']
sentence_state = {'sentence': '', 'tagged_words': []}
def generate_sentence():
result = text_generator('')[0]
sentence = result['generated_text']
tagged_words = analyze_sentence(sentence)
sentence_state['sentence'] = sentence
sentence_state['tagged_words'] = tagged_words
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(*args):
correct_answer = [tag for word, tag in sentence_state['tagged_words']]
user_answer = list(args)
if user_answer == correct_answer:
return 'Correcto!'
else:
return 'Incorrecto. La respuesta correcta es: ' + str(correct_answer)
def game_flow():
sentence, words = generate_sentence()
answer = check_answer(*gr.inputs)
return sentence, words, answer
iface = gr.Interface(fn=game_flow,
inputs=[gr.inputs.Action(label='Generate Sentence')] +
[gr.inputs.Dropdown(choices=pos_tags, label=f'Word {i+1}') for i in range(len(sentence_state['tagged_words']))],
outputs=[gr.outputs.Textbox(label='Sentence'),
gr.outputs.Textbox(label='Words'),
gr.outputs.Textbox(label='Result')])
iface.launch()
|