File size: 3,149 Bytes
fbca9b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
004facb
fbca9b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5cf9c30
fbca9b2
c5c1c41
 
 
 
fbca9b2
c5c1c41
 
 
 
fbca9b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c5c1c41
fbca9b2
 
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
import streamlit as st
import base64
import fasttext

st.set_page_config(
    page_title="detoxi.ai",
    page_icon="./mini_logo1.png",
    layout="centered"
)

# Кодируем логотип в base64 (для локальных файлов)
@st.cache_data
def get_image_base64(path):
    with open(path, "rb") as img_file:
        return base64.b64encode(img_file.read()).decode()

@st.cache_resource  # Кэширование модели для ускорения работы
def load_model():
    model = fasttext.load_model('./model_fasttext.bin')
    return model

model = load_model()

bin_str = get_image_base64("./билли.png")
page_bg_img = '''
<style>
.stApp{
background-image: linear-gradient(rgba(255, 255, 255, 0.7), 
                        rgba(255, 255, 255, 0.7)),
                        url("data:image/png;base64,%s");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
}
</style>
''' % bin_str
st.markdown(page_bg_img, unsafe_allow_html=True)

logo_base64 = get_image_base64("./top_logo1.png")

# Используем HTML для вставки логотипа в заголовок
st.markdown(
    f"""
    <div style="display: flex; justify-content: center;">
        <img src="data:image/png;base64,{logo_base64}" width="400">
    </div>
    """,
    unsafe_allow_html=True
)

# Описание
st.write("""<p style='text-align: center; font-size: 24px;'>Это приложение сделает твою речь менее токсичной. 
И даже не придётся платить 300 bucks.</p>""", unsafe_allow_html=True)

def highlight_obscene_words(text):
    label,_=model.predict(text.lower())
    if label[0]=='__label__positive':
        st.markdown(
            f"""<span style='background:#47916B;'>{text}|приемлемо</span>""", 
            unsafe_allow_html=True
        )
    else:
        st.markdown(
            f"""<span style='background:#ffcccc;'>{text}|токсично</span>""", 
            unsafe_allow_html=True
        )

# Боковая панель
with st.sidebar:
    st.header("""О приложении""")
    st.write("""
    Это приложение, созданно для сдачи задания по ML.
    Оно показывает, чему мы научились за эту домашку:
    - Благославлять создателей hugging face
    - Писать прототипы приложений с помощью библиотеки Streamlit
    - Дружно работать в команде
    """, unsafe_allow_html=True)

st.write("""<p style='text-align: center;'>Введите текст ниже, и приложение определит токсичность твоего предложения.</p>""", unsafe_allow_html=True)

user_input = st.text_area('',height=200)

if st.button("Проверить текст"):
    if user_input.strip():
        st.subheader("Результат:")
        highlight_obscene_words(user_input)
    else:
        st.warning("Пожалуйста, введите текст для проверки")