HHansi's picture
initial commit
dea7dd8
raw
history blame
No virus
1.96 kB
# Created by Hansi at 30/08/2023
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
import streamlit as st
from accord_nlp.information_extraction.convertor import entity_pairing, graph_building
from accord_nlp.information_extraction.ie_pipeline import InformationExtractor
@st.cache_resource
def init():
return InformationExtractor()
st.set_page_config(
page_title='ACCORD NLP Demo',
initial_sidebar_state='expanded',
layout='wide',
)
with st.spinner(text="Initialising..."):
ie = init()
def main():
st.sidebar.title("ACCORD-NLP")
st.sidebar.markdown("Extract information from text")
st.sidebar.markdown(
"[code](https://github.com/Accord-Project/NLP-Framework)"
)
st.header("Input a sentence")
txt = st.text_area('Sentence')
# st.write(txt)
# with st.spinner(text="Processing..."):
# graph = ie.sentence_to_graph(txt)
if txt:
# preprocess
sentence = ie.preprocess(txt)
st.write(sentence)
# NER
with st.spinner(text="Recognising entities..."):
ner_predictions, ner_raw_outputs = ie.ner_model.predict([sentence])
st.write(ner_predictions)
with st.spinner(text="Extracting relations..."):
# pair entities to predict their relations
entity_pair_df = entity_pairing(sentence, ner_predictions[0])
st.write('entity paired')
# relation extraction
re_predictions, re_raw_outputs = ie.re_model.predict(entity_pair_df['output'].tolist())
entity_pair_df['prediction'] = re_predictions
st.write(re_predictions)
with st.spinner(text="Building graph..."):
# build graph
graph = graph_building(entity_pair_df, view=False)
# st.success()
st.header('Entity-Relation Representation')
st.graphviz_chart(graph)
if __name__ == '__main__':
main()