from typing import Dict, Union from gliner import GLiNER import gradio as gr model = GLiNER.from_pretrained("urchade/gliner_multi-v2.1") examples0 = [ [ "Libretto by Marius Petipa, based on the 1822 novella ``Trilby, ou Le Lutin d'Argail`` by Charles Nodier, first presented by the Ballet of the Moscow Imperial Bolshoi Theatre on January 25/February 6 (Julian/Gregorian calendar dates), 1870, in Moscow with Polina Karpakova as Trilby and Ludiia Geiten as Miranda and restaged by Petipa for the Imperial Ballet at the Imperial Bolshoi Kamenny Theatre on January 17–29, 1871 in St. Petersburg with Adèle Grantzow as Trilby and Lev Ivanov as Count Leopold.", "person, book, location, date, actor, character", 0.3, True, ], [ """ * Data Scientist, Data Analyst, or Data Engineer with 1+ years of experience. * Experience with technologies such as Docker, Kubernetes, or Kubeflow * Machine Learning experience preferred * Experience with programming languages such as Python, C++, or SQL preferred * Experience with technologies such as Databricks, Qlik, TensorFlow, PyTorch, Python, Dash, Pandas, or NumPy preferred * BA or BS degree * Active Secret OR Active Top Secret or Active TS/SCI clearance """, "software package, programing language, software tool, degree, job title", 0.3, False, ], [ "However, both models lack other frequent DM symptoms including the fibre-type dependent atrophy, myotonia, cataract and male-infertility.", "disease, symptom", 0.3, False, ], [ "Synergy between signal transduction pathways is obligatory for expression of c-fos in B and T cell lines: implication for c-fos control via surface immunoglobulin and T cell antigen receptors.", "DNA, RNA, cell line, cell type, protein", 0.3, False, ], [ "The choice of the encoder and decoder modules of dnpg can be quite flexible, for instance long short term memory networks (lstm) or convolutional neural network (cnn).", "short acronym, long acronym", 0.3, False, ], [ "Amelia Earhart flew her single engine Lockheed Vega 5B across the Atlantic to Paris.", "person, company, location, airplane", 0.3, True, ], [ "Feldman is a contributor to NBC Sports Boston's ``State of the Revs`` and ``Revolution Postgame Live`` programs as well as to 98.5 the SportsHub, SiriusXM FC's MLS coverage and to other New England and national radio outlets and podcasts.", "person, company, location", 0.3, False, ], [ "On 25 July 1948, on the 39th anniversary of Bleriot's crossing of the English Channel, the Type 618 Nene-Viking flew Heathrow to Paris (Villacoublay) in the morning carrying letters to Bleriot's widow and son (secretary of the FAI), who met it at the airport.", "date, location, person, organization", 0.3, False, ], [ "Leo & Ian won the 1962 Bathurst Six Hour Classic at Mount Panorama driving a Daimler SP250 sports car, (that year the 500 mile race for touring cars were held at Phillip Island)", "person, date, location, organization, competition", 0.3, False, ], [ "The Shore Line route of the CNS & M until 1955 served, from south to north, the Illinois communities of Chicago, Evanston, Wilmette, Kenilworth, Winnetka, Glencoe, Highland Park, Highwood, Fort Sheridan, Lake Forest, Lake Bluff, North Chicago, Waukegan, Zion, and Winthrop Harbor as well as Kenosha, Racine, and Milwaukee (the ``KRM'') in Wisconsin.", "location, organization, date", 0.3, False, ], [ "Comet C/2006 M4 (SWAN) is a non-periodic comet discovered in late June 2006 by Robert D. Matson of Irvine, California and Michael Mattiazzo of Adelaide, South Australia in publicly available images of the Solar and Heliospheric Observatory (SOHO).", "person, organization, date, location", 0.3, False, ], [ "From November 29, 2011 to March 31, 2012, Karimloo returned to ``Les Misérables`` to play the lead role of Jean Valjean at The Queen's Theatre, London, for which he won the 2013 Theatregoers' Choice Award for Best Takeover in a Role.", "person, actor, award, date, location", 0.3, False, ], [ "A Mexicali health clinic supported by former Baja California gubernatorial candidate Enrique Acosta Fregoso (PRI) was closed on June 15 after selling a supposed COVID-19 ``cure'' for between MXN $10,000 and $50,000.", "location, organization, person, date, currency", 0.3, False, ], [ "Built in 1793, it was the home of Mary Young Pickersgill when she moved to Baltimore in 1806 and the location where she later sewed the ``Star Spangled Banner'', in 1813, the huge out-sized garrison flag that flew over Fort McHenry at Whetstone Point in Baltimore Harbor in the summer of 1814 during the British Royal Navy attack in the Battle of Baltimore during the War of 1812.", "date, person, location, organization, event, flag", 0.3, False, ], ] examples1 = [ [ "Libretto von Marius Petipa, basierend auf der Novelle ``Trilby, ou Le Lutin d'Argail`` von Charles Nodier aus dem Jahr 1822, erstmals präsentiert vom Ballett des Moskauer Kaiserlichen Bolschoi-Theaters am 25. Januar/6. Februar (Julianischer/Gregorianischer Kalender) 1870 in Moskau mit Polina Karpakova als Trilby und Ludiia Geiten als Miranda und neu inszeniert von Petipa für das Kaiserliche Ballett am Kaiserlichen Bolschoi-Kamenny-Theater vom 17. bis 29. Januar 1871 in St. Petersburg mit Adèle Grantzow als Trilby und Lev Ivanov als Graf Leopold.", "person, buch, ort, datum, schauspieler, charakter", 0.3, True, ], [ """ * Data Scientist, Data Analyst oder Data Engineer mit mehr als 1 Jahr Erfahrung. * Erfahrung mit Technologien wie Docker, Kubernetes oder Kubeflow * Erfahrung mit maschinellem Lernen bevorzugt * Erfahrung mit Programmiersprachen wie Python, C++ oder SQL bevorzugt * Erfahrung mit Technologien wie Databricks, Qlik, TensorFlow, PyTorch, Python, Dash, Pandas oder NumPy bevorzugt * BA- oder BS-Abschluss * Aktive Geheimhaltungsstufe (Secret) oder aktive Top-Secret- oder aktive TS/SCI-Freigabe """, "softwarepaket, programmiersprache, softwaretool, abschluss, berufsbezeichnung", 0.3, False, ], [ "Jedoch fehlen bei beiden Modellen andere häufige DM-Symptome wie die faserabhängige Atrophie, Myotonie, Katarakt und männliche Unfruchtbarkeit.", "krankheit, symptom", 0.3, False, ], [ "Die Synergie zwischen Signaltransduktionswegen ist obligatorisch für die Expression von c-fos in B- und T-Zelllinien: Implikation für die c-fos-Kontrolle über Oberflächenimmunoglobulin und T-Zell-Antigenrezeptoren.", "DNA, RNA, zelllinie, zelltyp, protein", 0.3, False, ], [ "Die Wahl der Encoder- und Decoder-Module von dnpg kann ziemlich flexibel sein, zum Beispiel Langzeit-Kurzzeit-Gedächtnis-Netzwerke (LSTM) oder Convolutional Neural Networks (CNN).", "kurzes akronym, langes akronym", 0.3, False, ], [ "Amelia Earhart flog ihren einmotorigen Lockheed Vega 5B über den Atlantik nach Paris.", "person, unternehmen, ort, flugzeug", 0.3, True, ], [ "Feldman ist ein Mitwirkender bei NBC Sports Bostons Programmen ``State of the Revs`` und ``Revolution Postgame Live`` sowie bei 98.5 the SportsHub, SiriusXM FCs MLS-Berichterstattung und anderen New England und nationalen Radiosendern und Podcasts.", "person, unternehmen, ort", 0.3, False, ], [ "Am 25. Juli 1948, am 39. Jahrestag von Bleriots Überquerung des Ärmelkanals, flog der Typ 618 Nene-Viking von Heathrow nach Paris (Villacoublay) am Morgen und transportierte Briefe an Bleriots Witwe und Sohn (Sekretär der FAI), die ihn am Flughafen trafen.", "datum, ort, person, organisation", 0.3, False, ], [ "Leo & Ian gewannen 1962 das Bathurst Six Hour Classic am Mount Panorama, indem sie einen Daimler SP250 Sportwagen fuhren, (in diesem Jahr fand das 500-Meilen-Rennen für Tourenwagen auf Phillip Island statt)", "person, datum, ort, organisation, wettbewerb", 0.3, False, ], [ "Die Shore Line Route der CNS & M bediente bis 1955 von Süden nach Norden die Gemeinden Illinois von Chicago, Evanston, Wilmette, Kenilworth, Winnetka, Glencoe, Highland Park, Highwood, Fort Sheridan, Lake Forest, Lake Bluff, North Chicago, Waukegan, Zion und Winthrop Harbor sowie Kenosha, Racine und Milwaukee (die ``KRM'') in Wisconsin.", "ort, organisation, datum", 0.3, False, ], [ "Der Komet C/2006 M4 (SWAN) ist ein nicht-periodischer Komet, der Ende Juni 2006 von Robert D. Matson aus Irvine, Kalifornien, und Michael Mattiazzo aus Adelaide, Südaustralien, in öffentlich zugänglichen Bildern des Solar and Heliospheric Observatory (SOHO) entdeckt wurde.", "person, organisation, datum, ort", 0.3, False, ], [ "Vom 29. November 2011 bis zum 31. März 2012 kehrte Karimloo zu ``Les Misérables`` zurück, um die Hauptrolle des Jean Valjean im Queen's Theatre in London zu spielen, wofür er 2013 den Theatregoers' Choice Award für die beste Rollenübernahme gewann.", "person, schauspieler, auszeichnung, datum, ort", 0.3, False, ], [ "Eine von Enrique Acosta Fregoso (PRI), einem ehemaligen Kandidaten für das Amt des Gouverneurs von Baja California, unterstützte Klinik in Mexicali wurde am 15. Juni geschlossen, nachdem sie ein angebliches COVID-19-``Heilmittel`` für zwischen 10.000 und 50.000 MXN verkauft hatte.", "ort, organisation, person, datum, währung", 0.3, False, ], [ "Erbaut 1793, war es das Zuhause von Mary Young Pickersgill, als sie 1806 nach Baltimore zog und der Ort, an dem sie später das ``Star Spangled Banner'' nähte, 1813, die riesige überdimensionale Garnisonsflagge, die im Sommer 1814 während des Angriffs der britischen Royal Navy in der Schlacht von Baltimore während des Krieges von 1812 über Fort McHenry in Whetstone Point im Hafen von Baltimore wehte.", "datum, person, ort, organisation, ereignis, flagge", 0.3, False, ], ] examples = [ [ "Die Österreich GmbH sucht einen erfahrenen IT-Dienstleister zur Implementierung eines neuen ERP-Systems. Der Dienstleister muss Erfahrung mit SAP und Oracle haben und in der Lage sein, das Projekt bis zum 31. Dezember 2024 abzuschließen.", "unternehmen, software, projekt, datum", 0.3, True, ], [ """ * Bauunternehmen mit mindestens 5 Jahren Erfahrung im Hoch- und Tiefbau. * Erfahrung mit öffentlichen Bauprojekten in Österreich. * Nachweisbare Expertise in der Nutzung von Baumanagement-Software wie Procore oder BIM 360. * BA oder BS Abschluss im Bauingenieurwesen oder einem verwandten Bereich. * Aktive ISO 9001 Zertifizierung bevorzugt. """, "unternehmen, software, abschluss, zertifizierung, erfahrung", 0.3, False, ], [ "Die Beschaffung von 50 neuen Elektrofahrzeugen für den städtischen Fuhrpark soll bis zum 30. Juni 2025 abgeschlossen sein.", "fahrzeug, projekt, datum", 0.3, False, ], [ "Die Lieferung und Installation von Solarmodulen auf den Dächern aller öffentlichen Gebäude in Wien ist bis Ende 2024 geplant. Die Anbieter müssen nachweislich Erfahrung mit ähnlichen Projekten und eine gültige ÖNORM-Zertifizierung haben.", "projekt, ort, datum, zertifizierung", 0.3, False, ], [ "Für die Digitalisierung der Verwaltungsprozesse sucht die Österreich GmbH einen IT-Partner mit umfangreicher Erfahrung in der Implementierung von Cloud-Lösungen wie AWS oder Azure.", "unternehmen, software", 0.3, False, ], [ "Amelia Earhart GmbH bietet den Bau eines neuen Logistikzentrums an, das auf einem 10.000 m² großen Grundstück in Salzburg errichtet werden soll.", "unternehmen, ort, projekt", 0.3, True, ], [ "Die Österreich GmbH plant den Bau eines neuen Bürogebäudes und sucht Architekten mit Erfahrung in nachhaltigem Bauen und LEED-Zertifizierung.", "unternehmen, projekt, zertifizierung", 0.3, False, ], [ "Am 25. Juli 2024 wird die Ausschreibung für den Bau einer neuen Brücke über die Donau in Linz veröffentlicht. Bewerbungen werden bis zum 15. September 2024 angenommen.", "datum, ort, projekt", 0.3, False, ], [ "Die Österreich GmbH sucht nach einem Anbieter für die Wartung und Instandhaltung ihrer IT-Infrastruktur. Erfahrungen mit Cisco und Fortinet sind erforderlich.", "unternehmen, software", 0.3, False, ], [ "Für die Umsetzung des Projekts zur Verbesserung der Wasserversorgung in Graz wird ein erfahrenes Ingenieurbüro gesucht. Das Projekt beginnt am 1. Januar 2025 und endet am 31. Dezember 2026.", "projekt, ort, datum", 0.3, False, ], [ "Die Österreich GmbH sucht nach einem Partner für die Implementierung eines neuen CRM-Systems. Erfahrung mit Salesforce oder Microsoft Dynamics ist erforderlich.", "unternehmen, software", 0.3, False, ], [ "Vom 1. September 2024 bis zum 30. November 2024 werden Angebote für die Lieferung von Büromöbeln für das neue Hauptquartier in Wien angenommen. Die Anbieter müssen Erfahrung in der Lieferung von Großaufträgen nachweisen.", "datum, ort, projekt", 0.3, False, ], [ "Eine von der Österreich GmbH unterstützte Gesundheitsklinik in Salzburg sucht nach einem Anbieter für medizinische Geräte. Der Vertrag wird im Januar 2025 vergeben.", "ort, projekt, datum", 0.3, False, ], [ "Erbaut 1793, ist das Gebäude in Graz das älteste Verwaltungsgebäude der Österreich GmbH und wurde 2023 umfassend renoviert, um modernen Standards zu entsprechen.", "datum, ort, projekt", 0.3, False, ], ] def ner( text, labels: str, threshold: float, nested_ner: bool ) -> Dict[str, Union[str, int, float]]: labels = labels.split(",") return { "text": text, "entities": [ { "entity": entity["label"], "word": entity["text"], "start": entity["start"], "end": entity["end"], "score": 0, } for entity in model.predict_entities( text, labels, flat_ner=not nested_ner, threshold=threshold ) ], } with gr.Blocks(title="GLiNER-M-v2.1") as demo: gr.Markdown( """ # GLiNER-base WW GLiNER ist ein Modell zur Erkennung benannter Entitäten (Named Entity Recognition, NER), das in der Lage ist, beliebige Entitätstypen mithilfe eines bidirektionalen Transformator-Encoders (ähnlich wie BERT) zu identifizieren. Es stellt eine praktische Alternative zu traditionellen NER-Modellen dar, die auf vordefinierte Entitäten beschränkt sind, sowie zu großen Sprachmodellen (LLMs), die trotz ihrer Flexibilität teuer und für ressourcenbeschränkte Szenarien zu groß sind. ## Links * Model: https://huggingface.co./urchade/gliner_multi-v2.1 * Alle GLiNER Modelle: https://huggingface.co./models?library=gliner * Paper: https://arxiv.org/abs/2311.08526 * Repository: https://github.com/urchade/GLiNER ## Disclaimer Dieses Modell ist ein Proof of Concept und sollte nicht für Produktivitätszwecke eingesetzt werden. Daten werden nicht gespeichert. """ ) with gr.Accordion("Gliner lokal ausfhren", open=False): gr.Markdown( """ ## Installation Um dieses Modell lokal auszufhren, die GLiNER Python Bibliothek installieren: ``` !pip install gliner ``` ## Usage Nach dem Herunterladen der GLiNER Bibliothek kann die GLiNER Klasse importiert werden. Dann kann dieses Modell mit `GLiNER.from_pretrained` geladen und Entitäten mit `predict_entities` vorhergesagt werden. """ ) gr.Code( ''' from gliner import GLiNER model = GLiNER.from_pretrained("urchade/gliner_mediumv2.1") text = """ Cristiano Ronaldo dos Santos Aveiro (portugiesische Aussprache: [kɾiʃˈtjɐnu ʁɔˈnaldu]; geboren am 5. Februar 1985) ist ein portugiesischer Profifußballer, der als Stürmer für den Saudi Pro League Club Al Nassr und die portugiesische Nationalmannschaft spielt und beide Teams als Kapitän anführt. Er wird weithin als einer der größten Spieler aller Zeiten angesehen. Ronaldo hat fünf Ballon d’Or-Auszeichnungen, eine Rekordzahl von drei UEFA Men’s Player of the Year Awards und vier European Golden Shoes gewonnen, die meisten von einem europäischen Spieler. In seiner Karriere hat er 33 Trophäen gewonnen, darunter sieben Meistertitel, fünf UEFA Champions Leagues, die UEFA-Europameisterschaft und die UEFA Nations League. Ronaldo hält die Rekorde für die meisten Einsätze (183), Tore (140) und Vorlagen (42) in der Champions League, Tore bei der Europameisterschaft (14), internationale Tore (128) und internationale Einsätze (205). Er ist einer der wenigen Spieler, die über 1.200 professionelle Karriereauftritte gemacht haben, die meisten von einem Feldspieler, und hat über 850 offizielle Tore in seiner Seniorenkarriere für Verein und Land erzielt, was ihn zum besten Torschützen aller Zeiten macht. """ labels = ["person", "award", "date", "competitions", "teams"] entities = model.predict_entities(text, labels) for entity in entities: print(entity["text"], "=>", entity["label"]) ''', language="python", ) gr.Code( """ Cristiano Ronaldo dos Santos Aveiro => person 5 February 1985 => date Al Nassr => teams Portugal national team => teams Ballon d'Or => award UEFA Men's Player of the Year Awards => award European Golden Shoes => award UEFA Champions Leagues => competitions UEFA European Championship => competitions UEFA Nations League => competitions Champions League => competitions European Championship => competitions """ ) input_text = gr.Textbox( value=examples[0][0], label="Text input", placeholder="Enter your text here" ) with gr.Row() as row: labels = gr.Textbox( value=examples[0][1], label="Labels", placeholder="Enter your labels here (comma separated)", scale=2, ) threshold = gr.Slider( 0, 1, value=0.3, step=0.01, label="Threshold", info="Lower the threshold to increase how many entities get predicted.", scale=1, ) nested_ner = gr.Checkbox( value=examples[0][2], label="Nested NER", info="Allow for nested NER?", scale=0, ) output = gr.HighlightedText(label="Predicted Entities") submit_btn = gr.Button("Submit") examples = gr.Examples( examples, fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output, cache_examples=True, ) # Submitting input_text.submit( fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output ) labels.submit( fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output ) threshold.release( fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output ) submit_btn.click( fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output ) nested_ner.change( fn=ner, inputs=[input_text, labels, threshold, nested_ner], outputs=output ) demo.queue() demo.launch(debug=True, server_name="0.0.0.0")