|
import gradio as gr |
|
from sentence_transformers import SentenceTransformer |
|
from sklearn.metrics.pairwise import cosine_similarity |
|
import numpy as np |
|
|
|
|
|
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') |
|
|
|
|
|
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): |
|
|
|
user_embedding = model.encode([user_text])[0] |
|
|
|
|
|
results = {} |
|
for profile_name, profile_desc in disc_profiles.items(): |
|
profile_embedding = model.encode([profile_desc])[0] |
|
|
|
|
|
similarity = cosine_similarity([user_embedding], [profile_embedding])[0][0] |
|
results[profile_name] = float(similarity) |
|
|
|
|
|
total = sum(results.values()) |
|
normalized_results = {k: (v/total) * 100 for k, v in results.items()} |
|
|
|
|
|
sorted_results = dict(sorted(normalized_results.items(), key=lambda x: x[1], reverse=True)) |
|
|
|
|
|
output = "Análise do Perfil DISC:\n\n" |
|
for profile, score in sorted_results.items(): |
|
output += f"{profile}: {score:.1f}%\n" |
|
|
|
return output |
|
|
|
|
|
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"] |
|
] |
|
) |
|
|
|
|
|
iface.launch() |