Spaces:
Build error
Build error
| 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() | |