annotator_demo / app.py
senyukhin's picture
Update app.py
d7676e6
import streamlit as st
import diary as d
import sentiment_parser as sp
import network_builder as nb
from pyvis.network import Network
import streamlit.components.v1 as components
import word_transformations as wt
st.title('Автоматический аннотатор')
# st.markdown("Скопируйте текст дневика в это поле или выберите для теста один из подготовленных отрывков.")
txt = st.text_area('Скопируйте текст дневника в это поле', height=100)
option = st.selectbox(
'Или выберите один из пробных текстов дневников:',
('Выбрать...', 'Анатолий Василивицкий', 'Мария Германова'))
if option == 'Анатолий Василивицкий':
with open('test_1.txt', 'r') as f:
txt = f.read()
elif option == 'Мария Германова':
with open('test.txt', 'r') as f:
txt = f.read()
# diary = st.text_area('Текст дневника')
if st.button('Обработать') and txt != '':
try:
df = d.analyze(txt)
graph = nb.build_graph(df)
GENDER = wt.get_gender(df['tokens'])
locations = df['locations']
st.markdown(f'**Аннотация этого дневника:** {nb.annotation(graph, GENDER, locations)}')
textnet = Network( height='400px',
width='100%',
bgcolor='white',
font_color='black'
)
textnet.from_nx(graph)
textnet.repulsion(
node_distance=220,
central_gravity=0.33,
spring_length=110,
spring_strength=0.10,
damping=0.95
)
try:
path = '/tmp'
textnet.save_graph(f'{path}/pyvis_graph.html')
HtmlFile = open(f'{path}/pyvis_graph.html', 'r', encoding='utf-8')
except:
path = '/html_files'
textnet.save_graph(f'{path}/pyvis_graph.html')
HtmlFile = open(f'{path}/pyvis_graph.html', 'r', encoding='utf-8')
st.markdown('### «Граф знания» этого дневника')
st.caption(':blue[Синим цветом] выделены узлы, связанные с одной датированной дневниковой записью, розовым — общий сентимент записи, :red[красным] — найденное утверждение, :green[зелёным] — места и локации, фиолетовым — занятия.')
st.caption('Чтобы увеличить граф и посмотреть лейблы узлов, установите курсор в нужном месте и проскорольте вниз.')
components.html(HtmlFile.read(), height=435)
except:
st.warning('Вставьте текст дневника, который начинается с даты!', icon="⚠️")