Analyze-Text / app.py
datasciencedojo's picture
submit button hover color updated
ba19334
#100
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
from io import BytesIO
import base64
nlp = spacy.load("en_core_web_sm")
def render_dep_chart(doc):
svg = displacy.render(doc, style="dep")
img = BytesIO()
img.write(svg.encode())
img.seek(0)
b64 = base64.b64encode(img.read()).decode()
return f"<img id='zoomable' src='data:image/svg+xml;base64,{b64}'/>"
def text_analysis(text):
doc = nlp(text)
dependency_parsing = render_dep_chart(doc)
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
css = """
footer {display:none !important}
.overflow-x-scroll {
overflow-x: scroll !important;
height: 15rem !important;
overflow-y: scroll !important;
}
.hover\:bg-orange-50:hover {
--tw-bg-opacity: 1 !important;
background-color: rgb(229,225,255) !important;
}
#zoomable{
cursor: pointer;
height: 13em;
max-width: none !important;
}
.output-markdown h1, .output-markdown h2{
z-index: 14;
align-self: flex-start;
min-width: 0px;
order: 5;
min-height: 0px;
height: max-content;
flex-grow: 0;
flex-shrink: 0;
width: calc(100% - 0px);
margin: 5px 0px;
white-space: pre-wrap;
overflow: visible;
word-break: break-word;
font-size: 18px !important;
font-weight: 500 !important;
color: rgb(9, 23, 71) !important;
line-height: 1 !important;
border-radius: 0px !important;
opacity: 1 !important;
}
.gr-button-lg {
z-index: 14;
width: 113px;
height: 30px;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(17, 20, 45) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: none !important;
}
.gr-button-lg:hover{
z-index: 14;
width: 113px;
height: 30px;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(66, 133, 244) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: rgb(0 0 0 / 23%) 0px 1px 7px 0px !important;
}
"""
with gr.Blocks(title="Analyze Text | Data Science Dojo", css = css) 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()