import gradio as gr from gradio_highlightedtextbox import HighlightedTextbox def convert_tagged_text_to_highlighted_text( tagged_text: str, tag_id: str | list[str], tag_open: str | list[str], tag_close: str | list[str], ) -> list[tuple[str, str | None]]: return HighlightedTextbox.tagged_text_to_tuples( tagged_text, tag_id, tag_open, tag_close ) def convert_highlighted_text_to_tagged_text( highlighted_text: dict[str, str | list[tuple[str, str | None]]], tag_id: str | list[str], tag_open: str | list[str], tag_close: str | list[str], ) -> str: return HighlightedTextbox.tuples_to_tagged_text( highlighted_text["data"], tag_id, tag_open, tag_close ) initial_text = "It is not something to be ashamed of: it is no different from the personal fears and dislikes of other things that manny peopl have." with gr.Blocks() as demo: gr.Markdown("### Parameters to control the highlighted textbox:") with gr.Row(): tag_id = gr.Dropdown( choices=["Typo", "Terminology", "Disfluency"], value=["Typo", "Terminology", "Disfluency"], multiselect=True, allow_custom_value=True, label="Tag ID", show_label=True, info="Insert one or more tag IDs to use in the highlighted textbox.", ) tag_open = gr.Dropdown( choices=["", "", ""], value=["", "", ""], multiselect=True, allow_custom_value=True, label="Tag open", show_label=True, info="Insert one or more tags to mark the beginning of a highlighted section.", ) tag_close = gr.Dropdown( choices=["", "", ""], value=["", "", ""], multiselect=True, allow_custom_value=True, label="Tag close", show_label=True, info="Insert one or more tags to mark the end of a highlighted section.", ) gr.Markdown("### Example tagged to highlight:") with gr.Row(): tagged_t2h = gr.Textbox( initial_text, interactive=True, label="Tagged Input", show_label=True, info="Tagged text using the format above to mark spans that will be highlighted.", ) high_t2h = HighlightedTextbox( convert_tagged_text_to_highlighted_text( tagged_t2h.value, tag_id.value, tag_open.value, tag_close.value ), interactive=False, label="Highlighted Output", info="Highlighted textbox intialized from the tagged input.", show_legend=True, show_label=True, legend_label="Legend:", show_legend_label=True, ) gr.Markdown("### Example highlight to tagged:") with gr.Row(): high_h2t = HighlightedTextbox( convert_tagged_text_to_highlighted_text( initial_text, tag_id.value, tag_open.value, tag_close.value ), interactive=True, label="Highlighted Input", info="Highlighted textbox using the format above to mark spans that will be highlighted.", show_legend=True, show_label=True, legend_label="Legend:", show_legend_label=True, ) tagged_h2t = gr.Textbox( initial_text, interactive=False, label="Tagged Output", info="Tagged text intialized from the highlighted textbox.", show_label=True, ) # Functions tagged_t2h.input( fn=convert_tagged_text_to_highlighted_text, inputs=[tagged_t2h, tag_id, tag_open, tag_close], outputs=high_t2h, ) high_h2t.input( fn=convert_highlighted_text_to_tagged_text, inputs=[high_h2t, tag_id, tag_open, tag_close], outputs=tagged_h2t, ) if __name__ == "__main__": demo.launch()