Using an ontology to recognize named entities in free text

I'm trying to solve a fairly basic problem in NPL efficiently. What tool or software package would you use to identify the words, or group of words that are part of an given ontology within a free text.

Let's imagine the inputs are the following dummy ontology:

And this publication's abstract:

This study evaluates the addition of metformin to standard of care in locally advanced and metastatic prostate cancer, half the patients will receive metformin in combination with standard treatment, and the other half will receive the standard of care only. Advanced-stage PCa is usually treated with androgen-deprivation therapy (ADT). Most patients with metastatic disease who were managed with ADT eventually progress to castration-resistant prostate cancer (CRPC) and die of the disease.

When run together through the tool via an API, or any such other call, then the outputs would look something like (in the format class:name text_loc_start:text_loc_end):

- ID005:ID011 34:56 (Drug:Metformin "metformin")
- ID004:ID008 117:132 (Condition:Prostate cancer "prostate cancer")
- ID005:ID011 444:523 (Drug:Metformin "metformin")
- ID004:ID008 981:995 (Condition:Prostate cancer "prostate cancer")

I am looking for a solution that would have an unrestrictive license and can be used commercially for free. Thanks in advance.

Topic named-entity-recognition hierarchical-data-format nlp

Category Data Science

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.