import streamlit as st
from transformers import AutoTokenizer, TFAutoModelForTokenClassification
from transformers import pipeline
st.set_page_config(page_title="Test",
layout="wide",
initial_sidebar_state="expanded")
st.markdown(
"""
""",
unsafe_allow_html=True
)
st.markdown(f'
{"Welcome to the Named Entity Recognition App!⚡"}
', unsafe_allow_html=True)
st.markdown(f'{"Token Classification"}
', unsafe_allow_html=True)
input_text=st.text_input("Input: ",key="input")
submit=st.button("Compute")
@st.cache_resource
def classifier(text):
# Use a pipeline as a high-level helper
tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-large",add_prefix_space=True)
model = TFAutoModelForTokenClassification.from_pretrained("Astral7/roberta-large-finetuned-ner")
pipe = pipeline("token-classification", model=model,tokenizer=tokenizer )
return pipe(text)
entities=[]
if input_text:
entities=classifier(input_text)
entity_tag = {
'B-eve':'EVE',
'I-eve':'EVE',
'B-org':'ORG',
'I-org':'ORG',
'B-gpe':'GPE',
'I-gpe':'GPE',
'B-geo':'GEO',
'I-geo':'GEO',
'B-nat':'NAT',
'I-nat':'NAT',
'B-per':'PER',
'I-per':'PER',
'B-art':'ART',
'I-art':'ART',
'B-tim':'TIM',
'I-tim':'TIM',
}
tag_out_styles = {
'B-eve':"eve_out",
'I-eve':'eve_out',
'B-org':'org_out',
'I-org':'org_out',
'B-gpe':'gpe_out',
'I-gpe':'gpe_out',
'B-geo':'geo_out',
'I-geo':'geo_out',
'B-nat':'nat_out',
'I-nat':'nat_out',
'B-per':'per_out',
'I-per':'per_out',
'B-art':'art_out',
'I-art':'art_out',
'B-tim':'tim_out',
'I-tim':'tim_out',
}
tag_in_styles = {
'B-eve':'eve_in',
'I-eve':'eve_in',
'B-org':'org_in',
'I-org':'org_in',
'B-gpe':'gpe_in',
'I-gpe':'gpe_in',
'B-geo':'geo_in',
'I-geo':'geo_in',
'B-nat':'nat_in',
'I-nat':'nat_in',
'B-per':'per_in',
'I-per':'per_in',
'B-art':'art_in',
'I-art':'art_in',
'B-tim':'tim_in',
'I-tim':'tim_in',
}
custom_style_tag=f"""
{"".join([f"
{entity['word']}{entity_tag[entity['entity']]}
" for entity in entities])}
"""
if submit:
st.markdown(f"Given Input: {input_text}
",unsafe_allow_html=True)
st.markdown(f"Output:
",unsafe_allow_html=True)
st.markdown(custom_style_tag, unsafe_allow_html=True)