File size: 1,841 Bytes
e512f7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18e49ea
 
 
 
 
 
e512f7f
 
 
 
026f6fc
e512f7f
 
 
 
 
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
import gradio as gr
import spacy
from spacy import displacy

nlp = spacy.load("en_core_web_md")

# -- Main functions --
def syntacticTree(expr):
    doc = nlp(expr)
    depths = {}

    def walk_tree(tk, depth):
        depths[tk.text] = depth
        if tk.n_lefts + tk.n_rights > 0: # if Doesn't root
            [walk_tree(child, depth + 1) for child in tk.children]

    [walk_tree(sent.root, 0) for sent in doc.sents]

    flat_tree = [tk.text+" - "+str(depths[tk.text]) for tk in doc]
    image_tree = displacy.render(doc, style='dep', options={'distance': 100})
    image_tree = "<center><div style='max-width: 800px; overflow-x:auto;'>"+image_tree+"</div></center>"
    
    return image_tree,flat_tree

# -- Interface --
demo = gr.Blocks(css=".container { max-width: 900px; margin: auto;}", title="Syntactic tree generator")

with demo:
    gr.Markdown("""<center> <h1>Syntactic tree generator</h1> </center>""")
    with gr.Row():
        with gr.Column():
            gr.Image(value="https://img.unocero.com/2019/11/facebook-app-para-hacer-memes-1-1024x576.jpg",label="", type="URL")
        with gr.Column():
            input_expr = gr.Textbox(label="Input", placeholder="Enter an expression here")
            out_flat_tree = gr.Text(label="Flat tree", value="")
    
    out_image_tree = gr.HTML(label="")

    gr.Examples(
        examples=[ 
            "glass in guys hand on right first guy", 
            "i have been happy",
            "the happy spiders",
            "gradio is a package that allows users to create simple web apps with just a few lines of code",
            "the best dog out there"],
        inputs=input_expr,
        examples_per_page=20,
    )
    
    input_expr.change(     
        fn=syntacticTree, 
        inputs=input_expr, 
        outputs=[out_image_tree, out_flat_tree])

demo.launch()