import gradio as gr
import os
os.system('python -m spacy download en_core_web_sm')
import spacy
from spacy import displacy
import pandas as pd

nlp = spacy.load("en_core_web_sm")

def text_analysis(text):
    doc = nlp(text)
    dependency_parsing = displacy.render(doc, style="dep", page=True)
    visual1 = (
        "<div style='max-width:100%; overflow:auto'>"
        + dependency_parsing
        + "</div>"
    )
    rows = []
    for token in doc:
        rows.append((token.text, token.lemma_, token.pos_, token.tag_, token.dep_,
            token.shape_, token.is_alpha, token.is_stop))
    table = pd.DataFrame(rows, columns = ["TEXT", "LEMMA","POS","TAG","DEP","SHAPE","ALPHA","STOP"])
    return table, visual1

with gr.Blocks() as demo:
    with gr.Row():
      inp = gr.Textbox(placeholder="Enter text to analyze...", label="Input")
    btn = gr.Button("Analyze Text")
    gr.Markdown("""
    # Analysis""")
    with gr.Row():
      table = gr.Dataframe()
    gr.Markdown("""## Dependency Parsing""")
    with gr.Row():
      visual1 = gr.HTML()
    with gr.Row():
      gr.Examples(
                examples=[
        ["Data Science Dojo is the leading platform providing training in data science, data analytics, and machine learning."],
        ["It's the best time to execute the plan."],
    ], fn=text_analysis, inputs=inp, outputs=[table, visual1], cache_examples=True)
    btn.click(fn=text_analysis, inputs=inp, outputs=[table, visual1])

demo.launch()