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()