Spaces:
Sleeping
Sleeping
File size: 8,580 Bytes
6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 6ac395d 5ded745 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
import gradio as gr
from Summary import Summary
from NamedEntity import NER
entity_sample_text = \
("Mr Roberts had taken his dog for a walk in Hyde Park at around 9pm. "
"He saw a group of people shouting at Stephen - a guy who would shortly "
"have his Rolex watch and iPhone stolen by the same group of people "
"that had surrounded him. A lady named Fiona Walker was crossing the High "
"Street that runs alongside the park. She heard Mr Roberts shout for help "
"and called the police to assist.\n\n Constable Robbins arrived after about "
"20 minutes by which time the group had dispersed. Mr Roberts was able to "
"give a description of the people who had stolen Stephen's Rolex watch and iPhone. "
"He said that one of the people was wearing a blue Adidas t-shirt and another "
"was wearing a red Arsenal football cap. "
"It turned out the gang members hailed from Paddington and Mayfair and used Uber to "
"move around the area.\n\n"
"The gang leader had to appear at "
"the Old Bailey on 1st January 2021. He was sentenced to 3 years in prison "
"for robbery and assault by Judge Jennifer Sanderson."
)
summary_sample_text = \
("The City of London, often simply referred to as The City, is a historic and iconic part of "
"the British capital, London. With a rich history dating back over 2,000 years, it stands as a "
"testament to the enduring legacy of British culture and finance. Covering an area of "
"approximately 1.12 square miles (2.9 square kilometers), it may be small in size, but it packs "
"a punch in terms of its global significance. One of the most notable features of The City is "
"its status as the financial heart of London and, indeed, the world. The area is home to the "
"Bank of England, the London Stock Exchange, and numerous multinational banks and financial "
"institutions. The towering skyscrapers and modern architecture that dot the skyline serve as "
"a symbol of the city's economic power and influence. The City's historic role in finance "
"dates back to the Middle Ages when it became the hub of international trade and commerce. "
"Today, it remains a hub for global finance, attracting professionals from all corners of the "
"globe. The City's historic and architectural heritage is another captivating aspect. Wandering "
"through its labyrinthine streets, one can marvel at the blend of old and new. Ancient structures "
"like the Tower of London and St. Paul's Cathedral coexist with sleek modern office buildings. "
"The contrast in architectural styles is a testament to London's ability to embrace its rich "
"history while continually evolving to meet the demands of the future. Culturally, The City "
"offers a unique blend of tradition and innovation. It hosts various cultural events and "
"festivals throughout the year, attracting both locals and tourists. The City's vibrant food "
"scene is another highlight, with a multitude of restaurants catering to diverse tastes, from "
"classic British fare to international cuisine. Despite its bustling urban environment, The City "
"also boasts several green spaces. One can escape the hustle and bustle of the financial district "
"by strolling along the banks of the River Thames, enjoying the lush gardens of Postman's Park, "
"or exploring the serene Barbican Conservatory. Transportation in The City is well-developed, "
"making it easily accessible. The London Underground, buses, and extensive pedestrian walkways "
"ensure that both residents and visitors can navigate the area efficiently. In conclusion, The "
"City of London is a city within a city, a captivating blend of history, finance, culture, and "
"architecture. Its enduring importance on the global stage, its rich heritage, and its vibrant "
"cultural scene make it a must-visit destination for anyone exploring the dynamic and diverse city "
"of London. Whether you are drawn by its financial prowess, architectural beauty, or cultural "
"riches, The City has something to offer every visitor, and its enduring appeal is sure to stand "
"the test of time."
)
entity_desc = ("This demo uses the [DSLIM BERT model](https://huggingface.co/dslim/bert-base-NER) "
"to identify named entities in a piece of text. It has been trained to recognise "
"four types of entities: location (LOC), organisations (ORG), person (PER) and "
"Miscellaneous (MISC). The model size is approximately 430Mb. \n\n"
"This model is free for commercial use. \n\n"
"A [larger model](https://huggingface.co/dslim/bert-large-NER) is also available (~1.3Gb)."
)
summary_desc = ("This demo uses the "
"[legal-bert-base-uncased model](https://huggingface.co/nlpaueb/legal-bert-base-uncased) "
"intended to assist legal NLP research, computational law, and legal technology "
"applications. The model size is approximately 500Mb. \n\n "
"The model was trained using 12Gb of diverse English legal text across a number of fields. "
"This model is free for commercial use. \n\n"
)
class GlobalVariables:
def __init__(self):
self.entities = None
self.summary = None
app_globals = GlobalVariables()
def process_entities(txt_data):
if txt_data is None or len(txt_data.strip()) == 0:
raise gr.Error("Text to analyse cannot be empty")
app_globals.entities = NER(txt_data)
app_globals.entities.entity_markdown()
entity_list = '\n'.join(app_globals.entities.unique_entities)
heading = 'Entities highlighted in the original text'
output = f'## {heading} \n\n {app_globals.entities.markdown}'
return entity_list, output
def session_data(txt_data):
pass
def process_summary(txt_data):
if txt_data is None or len(txt_data.strip()) == 0:
raise gr.Error("Text to summarise cannot be empty")
app_globals.summary = Summary(txt_data)
result = app_globals.summary.result
source_text_length = len(txt_data.split(' '))
summary_text_length = len(result.split(' '))
info = 'Words in source text: ' + str(source_text_length)
info += '\nWords in summary: ' + str(summary_text_length)
info += ('\nSource text shortened by a factor of: ' +
str(round(source_text_length/summary_text_length, 1)) + ' times')
return info, result
with gr.Blocks() as demo:
# The legal summary appliation tab.
with gr.Tab('Summaries'):
gr.Markdown("# Summarising text")
with gr.Accordion("See Details", open=False):
gr.Markdown(summary_desc)
text_summary_source = gr.Textbox(label="Text to summarise", lines=10)
text_summary = gr.Textbox(label="Summary", lines=3)
text_info = gr.Textbox(label="Related information", lines=5)
with gr.Row():
btn_sample_summary = gr.Button("Load Sample Text")
btn_clear_summary = gr.Button("Clear Summary Data")
btn_summary = gr.Button("Get Summary", variant='primary')
# Event Handler
btn_sample_summary.click(fn=lambda: summary_sample_text, outputs=[text_summary_source])
btn_clear_summary.click(fn=lambda: ('', '', ''), outputs=[text_summary_source, text_summary, text_info])
btn_summary.click(fn=process_summary, inputs=[text_summary_source], outputs=[text_info, text_summary])
with gr.Tab('Entities'):
gr.Markdown("# Extracting named entities")
with gr.Accordion("See Details", open=False):
gr.Markdown(entity_desc)
text_source = gr.Textbox(label="Text to analyse", lines=10)
text_entities = gr.Textbox(label="Unique entities", lines=3)
mk_output = gr.Markdown(label="Entities Highlighted", value='Highlighted entities appear here')
with gr.Row():
btn_sample_entity = gr.Button("Load Sample Text")
btn_clear_entity = gr.Button("Clear Data")
btn_entities = gr.Button("Get Entities", variant='primary')
# Event Handlers
btn_sample_entity.click(fn=lambda: entity_sample_text, outputs=[text_source])
btn_entities.click(fn=process_entities, inputs=[text_source], outputs=[text_entities, mk_output])
btn_clear_entity.click(fn=lambda: ('', '', ''), outputs=[text_source, text_entities, mk_output])
demo.launch()
|