-
Notifications
You must be signed in to change notification settings - Fork 0
/
codemix_viz.py
57 lines (37 loc) · 1.37 KB
/
codemix_viz.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import streamlit as st
from annotated_text import annotated_text
from annotated_text import annotation
import html
from htbuilder import H, HtmlElement, styles
from htbuilder.units import unit
from ast import literal_eval
from IPython.display import HTML, display
# Only works in 3.7+: from htbuilder import div, span
div = H.div
span = H.span
# Only works in 3.7+: from htbuilder.units import px, rem, em
px = unit.px
rem = unit.rem
em = unit.em
def print_sample_st_annot_text(sample_text, sample_langspan, sample_posspan):
lang_color_dict = {'en':"#afa" , 'hi' : "#faa", "ne" : "#8ef" ,
"acro" : "#fea", "univ" : "#c39" }
if not isinstance(sample_text, list):
sample_text = sample_text.split()
assert len(sample_text) == len(sample_posspan) == len(sample_langspan)
annot_text = []
for form , lang, pos in zip(sample_text, sample_langspan, sample_posspan):
annot_text.append((form, pos, lang_color_dict[lang]))
out = div()
for arg in annot_text:
if isinstance(arg, str):
out(html.escape(arg))
elif isinstance(arg, HtmlElement):
out(arg)
elif isinstance(arg, tuple):
out(annotation(*arg))
else:
raise Exception("Oh noes!")
# print(str(out))
display(HTML(str(out)))
display(HTML('<hr>'))