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)