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