Multi-task-NLP / text_annotation.py
miesnerjacob's picture
Add application files
4b75840
raw history blame
No virus
1.85 kB
import streamlit as st
from text_annotation_utils import *
def annotated_text(*args, type=None):
"""Writes text with annotations into your Streamlit app.
Parameters
----------
*args : str, tuple or htbuilder.HtmlElement
Arguments can be:
- strings, to draw the string as-is on the screen.
- tuples of the form (main_text, annotation_text, background, color) where
background and foreground colors are optional and should be an CSS-valid string such as
"#aabbcc" or "rgb(10, 20, 30)"
- HtmlElement objects in case you want to customize the annotations further. In particular,
you can import the `annotation()` function from this module to easily produce annotations
whose CSS you can customize via keyword arguments.
Examples
--------
# >>> annotated_text(
# ... "This ",
# ... ("is", "verb", "#8ef"),
# ... " some ",
# ... ("annotated", "adj", "#faa"),
# ... ("text", "noun", "#afa"),
# ... " for those of ",
# ... ("you", "pronoun", "#fea"),
# ... " who ",
# ... ("like", "verb", "#8ef"),
# ... " this sort of ",
# ... ("thing", "noun", "#afa"),
# ... )
# >>> annotated_text(
# ... "Hello ",
# ... annotation("world!", "noun", color="#8ef", border="1px dashed red"),
# ... )
"""
if type == 'title':
st.markdown(
'<p class="big-font">' + get_annotated_html(*args)+ '</p>',
unsafe_allow_html=True,
)
if type == 'description':
st.markdown(
'<p class="medium-font">' + get_annotated_html(*args) + '</p>',
unsafe_allow_html=True,
)
else:
st.markdown(
get_annotated_html(*args),
unsafe_allow_html=True,
)