Spaces:
Runtime error
Runtime error
import streamlit as st | |
import transformers as tr | |
import spacy as sp | |
def load_pipeline(name: str): | |
return tr.pipeline('token-classification', model=name) | |
pipeline = load_pipeline('Rexhaif/rubert-base-srl-seqlabeling') | |
def convert_to_spacy(text, result): | |
output = { | |
'text': text, | |
'title': None | |
} | |
ents = [] | |
for res in result: | |
if not res['word'].startswith("##"): | |
ents.append({ | |
'start': res['start'], | |
'end': res['end'], | |
'label': res['entity'].replace("B-", "") | |
}) | |
else: | |
ents[-1]['end'] = res['end'] | |
output['ents'] = ents | |
return output | |
colors = { | |
'PREDICATE': "#80bdff", | |
'КАУЗАТИВ': "#73ffbe", | |
'КАУЗАТОР': "#ff5b5e", | |
'ЭКСПЕРИЕНЦЕР': "#efff42", | |
'ДРУГОЕ': "#924fff", | |
'ИНСТРУМЕНТ': "#28fff1" | |
} | |
options = { | |
'ents': list(colors.keys()), 'colors': colors | |
} | |
st.title("Semantic Role Labeling for Russian Language") | |
st.header("Type your sentence to see predicate, arguments and their roles") | |
text = st.text_input('Sentence', 'представители силовых ведомств удивлены такой наглости') | |
result = pipeline(text) | |
html = sp.displacy.render( | |
convert_to_spacy(text, result=result), | |
style='ent', | |
manual=True, | |
options=options, | |
jupyter=False | |
) | |
st.markdown(html, unsafe_allow_html=True) |