File size: 1,809 Bytes
c2fc6b8
a8bb7b0
b09df44
c2fc6b8
aab4852
 
a8bb7b0
 
c2fc6b8
a8bb7b0
dbcf61e
 
856ec32
 
b09df44
aab4852
c2fc6b8
32bf464
856ec32
 
aab4852
a8bb7b0
b09df44
a8bb7b0
c2fc6b8
a8bb7b0
856ec32
 
32bf464
 
aab4852
b09df44
aab4852
dbcf61e
856ec32
aab4852
856ec32
aab4852
 
 
 
 
 
 
 
 
 
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
46
47
48
## app.py ##
import gradio as gr
import spacy
from transformers import pipeline
from gradio import Interface
from gradio.components import Textbox, Dropdown

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('', max_length=10)[0]  # Limiting max_length for simplicity
    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(start_game):
    if start_game == 'Start':
        sentence, words = generate_sentence()
        answer = check_answer(*gr.inputs)
        return sentence, words, answer

iface = Interface(fn=game_flow, 
                     inputs=[Textbox(label='Type "Start" to generate sentence')] + 
                            [Dropdown(choices=pos_tags, label=f'Word {i+1}') for i in range(10)],  # Assumes sentences of 10 words
                     outputs=[Textbox(label='Sentence'),
                              Textbox(label='Words'),
                              Textbox(label='Result')])
iface.launch()