| | import gradio as gr |
| | from tner import TransformersNER |
| | from spacy import displacy |
| |
|
| | model = TransformersNER("tner/roberta-large-ontonotes5") |
| | |
| |
|
| | examples = [ |
| | "Jacob Collier is a Grammy awarded artist from England.", |
| | "When Sebastian Thrun started working on self-driving cars at Google in 2007 , few people outside of the company took him seriously.", |
| | "But Google is starting from behind. The company made a late push into hardware, and Apple’s Siri, available on iPhones, and Amazon’s Alexa software, which runs on its Echo and Dot devices, have clear leads in consumer adoption." |
| | ] |
| |
|
| |
|
| | def predict(text): |
| | output = model.predict([text]) |
| | tokens = output['input'][0] |
| |
|
| | def retain_char_position(p): |
| | if p == 0: |
| | return 0 |
| | return len(' '.join(tokens[:p])) + 1 |
| |
|
| | doc = { |
| | "text": text, |
| | "ents": [{ |
| | "start": retain_char_position(entity['position'][0]), |
| | "end": retain_char_position(entity['position'][-1]) + len(entity['entity'][-1]), |
| | "label": entity['type'] |
| | } for entity in output['entity_prediction'][0]], |
| | "title": None |
| | } |
| |
|
| | html = displacy.render(doc, style="ent", page=True, manual=True, minify=True) |
| | html = ( |
| | "<div style='max-width:100%; max-height:360px; overflow:auto'>" |
| | + html |
| | + "</div>" |
| | ) |
| | |
| | return html |
| |
|
| |
|
| | demo = gr.Interface( |
| | fn=predict, |
| | inputs=gr.inputs.Textbox( |
| | lines=5, |
| | placeholder="Input sentence...", |
| | ), |
| | outputs="html", |
| | examples=examples |
| | ) |
| | demo.launch() |
| |
|