File size: 2,598 Bytes
fcc1cf1 ddd5e15 d10af90 fcc1cf1 ddd5e15 d10af90 ddd5e15 d10af90 ddd5e15 e29185d ddd5e15 fcc1cf1 ddd5e15 e29185d ddd5e15 d10af90 ddd5e15 fcc1cf1 ddd5e15 |
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
import gradio as gr
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# Carregar o modelo
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
# Definir perfis DISC base para comparação
disc_profiles = {
'D (Dominância)': '''
- Direto e decisivo
- Focado em resultados
- Assume riscos
- Gosta de desafios
- Toma iniciativa
''',
'I (Influência)': '''
- Otimista e entusiasta
- Comunicativo
- Sociável
- Persuasivo
- Expressivo
''',
'S (Estabilidade)': '''
- Paciente e cooperativo
- Leal e confiável
- Calmo e consistente
- Bom ouvinte
- Trabalha bem em equipe
''',
'C (Conformidade)': '''
- Analítico e preciso
- Sistemático
- Focado em qualidade
- Atento aos detalhes
- Segue regras e procedimentos
'''
}
def analyze_disc(user_text):
# Gerar embeddings para o texto do usuário
user_embedding = model.encode([user_text])[0]
# Gerar embeddings para cada perfil DISC
results = {}
for profile_name, profile_desc in disc_profiles.items():
profile_embedding = model.encode([profile_desc])[0]
# Calcular similaridade
similarity = cosine_similarity([user_embedding], [profile_embedding])[0][0]
results[profile_name] = float(similarity)
# Normalizar resultados para soma = 100%
total = sum(results.values())
normalized_results = {k: (v/total) * 100 for k, v in results.items()}
# Ordenar resultados
sorted_results = dict(sorted(normalized_results.items(), key=lambda x: x[1], reverse=True))
# Formatar resultado
output = "Análise do Perfil DISC:\n\n"
for profile, score in sorted_results.items():
output += f"{profile}: {score:.1f}%\n"
return output
# Interface Gradio
iface = gr.Interface(
fn=analyze_disc,
inputs=gr.Textbox(
lines=5,
placeholder="Digite uma descrição do comportamento da pessoa..."
),
outputs=gr.Textbox(),
title="Analisador de Perfil DISC",
description="Analise o perfil DISC baseado em uma descrição comportamental usando IA",
examples=[
["Pessoa focada em resultados, toma decisões rápidas e gosta de desafios"],
["Muito comunicativo, alegre e gosta de trabalhar com pessoas"],
["Calmo, paciente e trabalha bem em equipe"],
["Detalhista, analítico e segue procedimentos com precisão"]
]
)
# Iniciar a interface
iface.launch() |