File size: 2,974 Bytes
4e31838
 
 
 
 
 
 
8133eba
45df403
8133eba
e8d05b7
 
 
4e31838
8133eba
 
 
1ead3f8
13aebb5
1ead3f8
8133eba
1ead3f8
8133eba
e8d05b7
4e31838
 
 
 
 
304869d
 
 
ce311a9
4e31838
 
304869d
 
 
ce311a9
4e31838
e8d05b7
 
 
 
 
 
2537cf0
e8d05b7
 
 
4e31838
 
 
 
 
2f8d9c7
4e31838
e8d05b7
4e31838
c95266e
 
 
8133eba
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
import streamlit as st
from transformers import pipeline

# Carga de los dos modelos de an谩lisis de sentimientos
model_1 = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")
model_2 = pipeline("sentiment-analysis", model="finiteautomata/beto-sentiment-analysis")

# T铆tulo de la app
st.title("Evaluador de Servicio al Cliente")

# Inicializa el estado para el input_text si no existe
if "input_text" not in st.session_state:
    st.session_state["input_text"] = ""

# Funci贸n para mostrar el resultado
def mostrar_resultado(resultado):
    if resultado['label'] in ['4 stars','5 stars','POS']:
        st.success(f"Sentimiento: {resultado['label']} (Precisi贸n: {resultado['score']:.4f})")
    elif resultado['label'] in ['3 stars','NEU']:
        st.info(f"Sentimiento: {resultado['label']} (Precisi贸n: {resultado['score']:.4f})")
    else:
        st.error(f"Sentimiento: {resultado['label']} (Precisi贸n: {resultado['score']:.4f})")

# Funci贸n para analizar el sentimiento
def analizar_sentimiento(texto):
    resultado_1 = model_1(texto)[0]
    resultado_2 = model_2(texto)[0]

    # Mostrar resultados del primer modelo
    st.html("""</br>Resultado con <code>nlptown/bert-base-multilingual-uncased-sentiment</code></br>
            <small>* <i>Modelo basado en BERT y entrenado para 6 lenguajes con 50k revisiones en espa帽ol</i></small>
            """)
    mostrar_resultado(resultado_1)

    # Mostrar resultados del segundo modelo
    st.html("""</br>Resultado con <code>finiteautomata/beto-sentiment-analysis</code></br>
            <small>* <i>Modelo basado en BERT y entrenado con 5k tweets espec铆ficamente en espa帽ol</i></small>
            """)
    mostrar_resultado(resultado_2)

# Funci贸n para actualizar el texto desde la barra lateral
def actualizar_texto(nuevo_texto):
    st.session_state["input_text"] = nuevo_texto

# Mostrar el campo de texto principal con el valor desde session_state
input_text = st.text_input(
    "Cu茅ntanos tu opini贸n acerca de nuestro servicio:",
    value=st.session_state["input_text"]
)

# Bot贸n para ejecutar el an谩lisis
if st.button("Analizar"):
    if input_text:
        analizar_sentimiento(input_text)
    else:
        st.warning("Por favor, cu茅ntanos tu opini贸n acerca de nuestro servicio.")

# Barra lateral con sugerencias de texto
st.sidebar.header("Sugerencias de texto")
st.sidebar.button("Estoy muy feliz con el servicio prestado", on_click=actualizar_texto, args=("Estoy muy feliz con el servicio prestado",))
st.sidebar.button("El servicio prestado es un desastre total", on_click=actualizar_texto, args=("El servicio prestado es un desastre total",))
st.sidebar.button("El servicio estuvo m谩s o menos", on_click=actualizar_texto, args=("El servicio estuvo m谩s o menos",))
st.sidebar.button("Soy fan de las sorpresas... m谩s si son facturas inesperadas", on_click=actualizar_texto, args=("Soy fan de las sorpresas... m谩s si son facturas inesperadas",))