DHEIVER commited on
Commit
60d3016
·
verified ·
1 Parent(s): a9c9369

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -26
app.py CHANGED
@@ -1,6 +1,5 @@
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
3
- from sklearn.metrics.pairwise import cosine_similarity
4
  import numpy as np
5
 
6
  # Modelo para embeddings
@@ -34,11 +33,9 @@ disc_questions = [
34
  ("S", "Ouvir atentamente e contribuir quando solicitado"),
35
  ("C", "Tomar notas e questionar os detalhes")
36
  ]
37
- },
38
- # Adicione mais perguntas conforme necessário
39
  ]
40
 
41
- # Características de cada perfil para o relatório
42
  perfis_caracteristicas = {
43
  'D': {
44
  'pontos_fortes': [
@@ -129,12 +126,18 @@ perfis_caracteristicas = {
129
  def calcular_perfil(respostas):
130
  # Contar frequência de cada perfil
131
  contagem = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
 
132
  for resposta in respostas:
133
- contagem[resposta] += 1
 
 
134
 
135
  # Calcular porcentagens
136
  total = sum(contagem.values())
137
- percentuais = {k: (v/total) * 100 for k, v in contagem.items()}
 
 
 
138
 
139
  return percentuais
140
 
@@ -166,18 +169,14 @@ def gerar_relatorio(percentuais):
166
  for caracteristica in perfis_caracteristicas[perfil_dominante]['ambiente_ideal']:
167
  relatorio += f"- {caracteristica}\n"
168
 
169
- # Recomendações personalizadas baseadas no modelo
170
- texto_base = " ".join(perfis_caracteristicas[perfil_dominante]['pontos_fortes'])
171
- embedding_base = model.encode([texto_base])[0]
172
-
173
  return relatorio
174
 
175
- def processar_questionario(respostas):
176
- # Converter respostas em perfis
177
- perfis_selecionados = [opcao.split()[0] for opcao in respostas]
178
 
179
  # Calcular percentuais
180
- percentuais = calcular_perfil(perfis_selecionados)
181
 
182
  # Gerar relatório
183
  relatorio = gerar_relatorio(percentuais)
@@ -188,23 +187,28 @@ def processar_questionario(respostas):
188
  with gr.Blocks(title="Questionário DISC") as iface:
189
  gr.Markdown("# Análise de Perfil Comportamental DISC")
190
 
191
- with gr.Group():
192
- respostas = []
193
- for i, questao in enumerate(disc_questions):
194
- gr.Markdown(f"### {questao['pergunta']}")
195
- respostas.append(
196
- gr.Radio(
197
- choices=[f"{perfil} - {desc}" for perfil, desc in questao['opcoes']],
198
- label=f"Questão {i+1}"
199
- )
200
- )
201
 
202
- btn = gr.Button("Gerar Relatório")
 
 
 
 
 
 
 
 
 
203
  output = gr.Textbox(label="Relatório", lines=20)
204
 
 
 
 
 
205
  btn.click(
206
  fn=processar_questionario,
207
- inputs=respostas,
208
  outputs=output
209
  )
210
 
 
1
  import gradio as gr
2
  from sentence_transformers import SentenceTransformer
 
3
  import numpy as np
4
 
5
  # Modelo para embeddings
 
33
  ("S", "Ouvir atentamente e contribuir quando solicitado"),
34
  ("C", "Tomar notas e questionar os detalhes")
35
  ]
36
+ }
 
37
  ]
38
 
 
39
  perfis_caracteristicas = {
40
  'D': {
41
  'pontos_fortes': [
 
126
  def calcular_perfil(respostas):
127
  # Contar frequência de cada perfil
128
  contagem = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
129
+
130
  for resposta in respostas:
131
+ if resposta: # Verifica se a resposta não é None
132
+ perfil = resposta.split()[0] # Pega a primeira letra (D, I, S ou C)
133
+ contagem[perfil] += 1
134
 
135
  # Calcular porcentagens
136
  total = sum(contagem.values())
137
+ if total > 0: # Evita divisão por zero
138
+ percentuais = {k: (v/total) * 100 for k, v in contagem.items()}
139
+ else:
140
+ percentuais = {k: 0 for k in contagem.keys()}
141
 
142
  return percentuais
143
 
 
169
  for caracteristica in perfis_caracteristicas[perfil_dominante]['ambiente_ideal']:
170
  relatorio += f"- {caracteristica}\n"
171
 
 
 
 
 
172
  return relatorio
173
 
174
+ def processar_questionario(*args):
175
+ # Recebe as respostas como argumentos individuais e converte para lista
176
+ respostas = list(args)
177
 
178
  # Calcular percentuais
179
+ percentuais = calcular_perfil(respostas)
180
 
181
  # Gerar relatório
182
  relatorio = gerar_relatorio(percentuais)
 
187
  with gr.Blocks(title="Questionário DISC") as iface:
188
  gr.Markdown("# Análise de Perfil Comportamental DISC")
189
 
190
+ # Lista para armazenar os componentes de rádio
191
+ radio_components = []
 
 
 
 
 
 
 
 
192
 
193
+ # Criar questões
194
+ for i, questao in enumerate(disc_questions):
195
+ gr.Markdown(f"### {questao['pergunta']}")
196
+ radio = gr.Radio(
197
+ choices=[f"{perfil} - {desc}" for perfil, desc in questao['opcoes']],
198
+ label=f"Questão {i+1}"
199
+ )
200
+ radio_components.append(radio)
201
+
202
+ # Saída
203
  output = gr.Textbox(label="Relatório", lines=20)
204
 
205
+ # Botão
206
+ btn = gr.Button("Gerar Relatório")
207
+
208
+ # Conectar função aos componentes
209
  btn.click(
210
  fn=processar_questionario,
211
+ inputs=radio_components,
212
  outputs=output
213
  )
214