akdeniz27's picture
Modify application file
41ca91f
raw
history blame
No virus
3.85 kB
# Turkish NER Demo for Various Models
from transformers import pipeline, AutoModelForTokenClassification, AutoTokenizer
import streamlit as st
import pandas as pd
# img_kognitek = Image.open("logo_tr_dikey.png")
# st.sidebar.image(img_kognitek, width=300)
example_list = [
"Mustafa Kemal Atatürk 1919 yılında Samsun'a çıktı.",
"""Dünya çapında 40 milyondan fazla insana bulaşan ve 1.1 milyondan fazla insanın ölümüne sebep olan corona virüsüne karşı Pfizer ile BioNTech'in geliştirdiği aşının ilk görüntüleri ortaya çıktı. Aşının fabrikadaki ilk görüntülerini değerlendiren Pfizer'ın Birleşik Krallık CEO'su, "Üretim bandında aşıyı görmek beni neşelendirdi" dedi.
ABD merkezli çokuluslu ilaç şirketi Pfizer ile Türk bilim insanlarının kurduğu BioNTech’in geliştirdiği corona virüsü aşısında sona gelindi… Pfizer, paylaştığı video ile bütün dünyayı heyecanlandıran gelişmeyi duyurdu.
Şirket, Belçika’daki Puurs’ta geliştirilen Covid-19 aşılarının seri üretim bandındaki üretim aşamasını uluslararası kamuoyu ile paylaştı. Almanya’nın Mainz kentinde Türk profesör Uğur Şahin ile eşi Özlem Türeci’nin kurduğu ve yönettiği biyoteknoloji şirketi BioNTech ile aşı sürecini sürdüren Pfizer’ın küçük şişelerde binlerce corona virüsü aşısı üretmeye başladığı belirtildi.
Pfizer, aşının güvenli ve etkili olduğunun klinik olarak da kanıtlanması ve resmi mercilerden de onay alınması durumunda üretilen aşının dağıtılacağını duyurdu."""
]
st.title("Demo for Turkish NER Models")
st.write("For details of models: 'https://huggingface.co/akdeniz27/")
st.write("Please refer 'https://huggingface.co/transformers/_modules/transformers/pipelines/token_classification.html' for entity grouping with aggregation_strategy parameter.")
st.sidebar.header("Select NER Model")
selection = st.sidebar.radio("", ('bert-base-turkish-cased-ner', 'convbert-base-turkish-cased-ner', 'xlm-roberta-base-turkish-ner'))
if selection == "bert-base-turkish-cased-ner":
model_checkpoint = "akdeniz27/bert-base-turkish-cased-ner"
elif selection == "convbert-base-turkish-cased-ner":
model_checkpoint = "akdeniz27/convbert-base-turkish-cased-ner"
elif selection == "xlm-roberta-base-turkish-ner":
model_checkpoint = "akdeniz27/xlm-roberta-base-turkish-ner"
st.sidebar.header("Select Aggregation Strategy Type")
aggregation = st.sidebar.radio("", ('first', 'simple', 'average', 'max', 'none'))
st.header("Select Text Input Method")
input_method = st.radio("", ('Select among Examples', 'Write or Paste New Text'))
if input_method == 'Select among Examples':
st.header("Select Text")
selected_text = st.selectbox('', example_list, index=0, key=1)
st.header("Selected Text")
input_text = st.text_area("", selected_text, height=128, max_chars=None, key=2)
elif input_method == "Write or Paste New Text":
st.header("Write or Paste New Text")
input_text = st.text_area('', value="", height=128, max_chars=None, key=2)
def setModel(model_checkpoint, aggregation):
model = AutoModelForTokenClassification.from_pretrained(model_checkpoint)
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
return pipeline('ner', model=model, tokenizer=tokenizer, aggregation_strategy=aggregation)
Run_Button = st.button("Run", key=None)
if Run_Button == True:
ner_pipeline = setModel(model_checkpoint, aggregation)
output = ner_pipeline(input_text)
df = pd.DataFrame.from_dict(output)
if aggregation != "none":
cols_to_keep = ['word','entity_group','score','start','end']
else:
cols_to_keep = ['word','entity','score','start','end']
df_final = df[cols_to_keep]
st.header("Recognized Entities")
st.dataframe(df_final)