import gradio as gr import os import base64 import spacy from utilities import constants from spacy import displacy os.system('python -m spacy download en_core_web_sm') nlp = spacy.load("en_core_web_sm") input_examples=[ "Every day may not be good, but there's something good in every day.", "The best preparation for tomorrow is doing your best today.", "Believe you can, and you're halfway there."] def AnalyzeText(text): doc = nlp(text) svg = displacy.render(doc, style='dep') svg_base64_encoded = base64.b64encode(svg.encode('utf-8')).decode('utf-8') nlp_html = f"""
""" pos_count = { "char_count": len(text), "token_count": len(doc) } pos_tokens = [] for token in doc: pos_tokens.extend([(token.text, token.pos_), (" ", None)]) return pos_tokens, pos_count, nlp_html def Clear(clearBtn): return(constants.NLP_PROMPT, [], {}, []) with gr.Blocks() as ui: label = gr.Label(show_label=False, value=constants.TEXT_ANALYSIS, container=False) with gr.Column(): with gr.Row(): with gr.Column(): gr.Markdown(constants.PURPOSE_MD) gr.Markdown(constants.NLP_ANALYSIS_PURPOSE) with gr.Column(): gr.Markdown(constants.DIRECTIONS_MD) gr.Markdown(value=constants.NLP_ANALYSIS_DIRECTIONS) with gr.Row(): with gr.Column(): inputString=gr.Textbox(placeholder=constants.NLP_PROMPT, label="Input Text", lines=3,interactive=True) with gr.Row(): clearBtn=gr.Button(constants.CLEAR, variant="secondary") submitBtn=gr.Button(constants.SUBMIT, variant="primary") with gr.Column(): posTags=gr.HighlightedText(label=constants.TOKENS) gr.Markdown(constants.NLP_ANALYSIS_MD) posCount=gr.JSON() inputExampleSelect = gr.Examples(input_examples,inputs=[inputString],label="Or select an example." ) gr.Markdown(constants.NLP_POS_MAP_MD) posTokens=gr.HTML() submitBtn.click(AnalyzeText, inputs=[inputString], outputs=[posTags,posCount,posTokens]) clearBtn.click(Clear, inputs=[clearBtn], outputs=[inputString,posTags,posCount,posTokens])