| from __future__ import annotations |
|
|
| import gradio as gr |
|
|
| from pipeline import labels2attrs, run_pipeline |
|
|
| color_panel_1 = [ |
| "red", |
| "green", |
| "yellow", |
| "DodgerBlue", |
| "orange", |
| "DarkSalmon", |
| "pink", |
| "cyan", |
| "gold", |
| "aqua", |
| "violet", |
| ] |
| index_colormap = {str(i): color_panel_1[i % len(color_panel_1)] for i in range(1, 100000)} |
|
|
| color_panel_2 = [ |
| "Gray", |
| "DodgerBlue", |
| "Wheat", |
| "OliveDrab", |
| "DarkKhaki", |
| "DarkSalmon", |
| "Orange", |
| "Gold", |
| "Aqua", |
| "Tomato", |
| "Violet", |
| ] |
|
|
| str_attrs = sorted([str(v) for v in set(labels2attrs.values())]) |
| attr_colormap = {attr: color for attr, color in zip(str_attrs, color_panel_2)} |
|
|
| DESCRIPTION = """ |
| Type any text in the textbox and press Submit. The app segments the text into clauses, |
| classifies the clause-level discourse attributes, and plots the attribute distributions. |
| """ |
|
|
| EXAMPLES = [ |
| [ |
| "My cousin was arrested for marijuana possession, and it ruined his life for years." |
| ], |
| [ |
| "Legalizing marijuana would reduce incarceration costs and improve tax revenue." |
| ], |
| ] |
|
|
| demo = gr.Interface( |
| fn=run_pipeline, |
| inputs=gr.Textbox( |
| label="Input Text", |
| lines=8, |
| placeholder="Paste text here...", |
| ), |
| outputs=[ |
| gr.HighlightedText( |
| label="Clause Segmentation", |
| color_map=index_colormap, |
| combine_adjacent=False, |
| show_legend=False, |
| ), |
| gr.HighlightedText( |
| label="Attribute Classification", |
| color_map=attr_colormap, |
| combine_adjacent=False, |
| show_legend=True, |
| ), |
| gr.Plot(label="Proportion of Attributes"), |
| ], |
| title="Anecdotal Discourse Classification Demo", |
| description=DESCRIPTION, |
| examples=EXAMPLES, |
| cache_examples=False, |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch(share=True) |