Spaces:
Build error
Build error
import streamlit as st | |
from topics import TopicModelling | |
import mdforest | |
import utils | |
import os | |
col1, mid, col2 = st.columns([30,5,20]) | |
with col1: | |
st.title("Welcome to Embeddr") | |
st.markdown("This is a demo of _one of the many_ use cases for an embedding of all your notes. This application lets you find **common ideas** between any two notes.") | |
st.markdown("You can upload two markdown files and the application will find the common ideas between them. It will generate insights based on the common ideas.") | |
st.markdown("**I will be building a better embedding model soon.** Stay tuned for updates. This is just a demo of what is possible with a good embedding model.") | |
with col2: | |
st.markdown("### [Sign up for updates](https://embeddr.my.canva.site/)") | |
st.image("media/qrcode.png") | |
st.markdown("---") | |
st.markdown("## Drop in two documents and get insights between them.") | |
col3, mid2, col4 = st.columns([40,5,40]) | |
with col3: | |
st.markdown("### Drop the first document") | |
file1 = st.file_uploader("Upload a file", type=["md", "txt"], key="first") | |
with col4: | |
st.markdown("### Drop the second document") | |
file2 = st.file_uploader("Upload a file", type=["md", "txt"], key="second") | |
topics = {} | |
results = {} | |
embedder = utils.load_model() | |
nlp = utils.load_nlp() | |
if not os.path.exists("./prompter/"): | |
os.mkdir("./prompter/") | |
if file1 is not None and file2 is not None: | |
input_text1 = file1.read().decode("utf-8") | |
input_text2 = file2.read().decode("utf-8") | |
cleaned_text1 = mdforest.clean_markdown(input_text1) | |
cleaned_text2 = mdforest.clean_markdown(input_text2) | |
st.title("Generating insights") | |
with st.spinner('Generating insights...'): | |
insight1 = TopicModelling(cleaned_text1) | |
insight2 = TopicModelling(cleaned_text2) | |
keywords1, concepts1 = insight1.generate_topics() | |
topics['insight1'] = [keywords1, concepts1] | |
keywords2, concepts2 = insight2.generate_topics() | |
topics['insight2'] = [keywords2, concepts2] | |
with st.spinner("Flux capacitor is fluxing..."): | |
clutered = utils.cluster_based_on_topics(nlp, embedder, cleaned_text1, cleaned_text2, num_clusters=3) | |
with st.spinner("Polishing up"): | |
results = utils.generate_insights(topics, file1.name, file2.name, cleaned_text1, cleaned_text2, clutered) | |
st.success("Done!") | |
st.title("Insights generated") | |
st.markdown("### The following insights are common to both documents.") | |
for result in results: | |
with st.expander(result["name"]): | |
st.write(result["description"]) | |
st.markdown("Related Concepts:") | |
for insight in result["concepts"]: | |
st.markdown(f" - {insight}") |