Python-Bibliothek zur Erkennung von Arzneimitteln mit benannter Entität

Python-Bibliothek zur Erkennung von Arzneimitteln mit benannter Entität

Erkennen von Medikamentennamen in unstrukturiertem englischen Text mit Python

Wir haben eine Python-Bibliothek namens Drug Named Entity Recognition als Open Source freigegeben, um Medikamentennamen in einer Zeichenfolge zu finden. Beispiel: „Ich habe Phenoxymethylpenicillin gekauft.“ Diese NLP-Aufgabe wird Named Entity Recognition (Medikamentennamen im Text finden) und Named Entity Linking (Medikamente IDs zuordnen) genannt.

Bitte beachten Sie, dass Drug Named Entity Recognition nur Medikamente mit hoher Zuverlässigkeit findet. Es findet auch keine Kurzcodenamen von Medikamenten, wie z. B. in der Medizin häufig verwendete Abkürzungen wie „Ceph“ für „Cephradin“, da diese höchst mehrdeutig sind.




[enter a text and click Find drugs and the drug data will be shown here]

Drug Named Entity Recognition ist auch als Google Sheets-Plugin verfügbar

Natural language processing

Want to learn more?

Liked what you’ve just read? Get in touch for an NLP consulting session.
Google Sheets logo

We have a no-code solution where you can use the library directly from Google Sheets!

You can install the plugin in Google Sheets here.

Drug name recogniser

What the Drug Named Entity Recognition Python library does

Drug Named Entity Recognition also only finds the English names of these drugs. Names in the other languages are not supported.

You can install the Python library by typing in the command line:

pip install drug-named-entity-recognition

Der Quellcode befindet sich auf Github und das Projekt auf Pypi .

Hand holding a bottle of chemicals

Interessieren Sie sich für andere Arten der Named Entity Recognition (NER)? Finanzen, Firmennamen, Länder, Standorte, Proteine, Gene, Moleküle?

Wenn Ihr NER-Problem branchenübergreifend ist und wahrscheinlich schon einmal aufgetreten ist, gibt es möglicherweise ein handelsübliches NER-Tool für Ihre Zwecke, wie beispielsweise unsere Python-Bibliothek zur Erkennung von länderspezifischen benannten Entitäten . Die wörterbuchbasierte Erkennung benannter Entitäten ist nicht immer die Lösung, da manchmal die Gesamtmenge der Entitäten offen ist und nicht aufgelistet werden kann (z. B. Personennamen). Daher ist manchmal ein maßgeschneidertes trainiertes NER-Modell die Antwort. Für Aufgaben wie das Suchen von E-Mail-Adressen oder Telefonnummern reichen reguläre Ausdrücke (einfache Regeln) aus.

Wenn Ihr Named-Entity-Erkennungs- oder Named-Entity-Linking-Problem sehr nischenhaft und ungewöhnlich ist und es ein Produkt für dieses Problem gibt, wird dieses Produkt Ihr Problem wahrscheinlich nur zu 80 % lösen und Sie werden mehr Arbeit haben, die letzte Meile zu beheben, als wenn Sie alles manuell erledigt hätten. Bitte kontaktieren Sie Fast Data Science und wir besprechen das gerne mit Ihnen. Wir haben beispielsweise an einem Beratungsauftrag gearbeitet, um Molekülnamen in Artikeln zu finden und Autorennamen Kunden zuzuordnen. Ziel war es, bei einem Pharmaunternehmen bestellte Molekülproben zurückzuverfolgen und festzustellen, wann die Proben zu einer Veröffentlichung führten. Für diesen Fall gab es keine vorgefertigte Bibliothek, die wir verwenden konnten.

Für ein Problem wie die Ermittlung von Ländernamen im Englischen, bei dem es sich um einen geschlossenen Satz mit bekannten Varianten und Aliasnamen handelt, steht normalerweise eine fertige Bibliothek zur Verfügung.

Für die Identifizierung einer Reihe von Molekülen, die von einem bestimmten Unternehmen hergestellt werden, eignet sich diese Art von Aufgabe eher für einen Beratungsauftrag .

Anwendungsbeispiele

In Ihrer Python-Konsole können Sie Folgendes versuchen:

Beispiel 1

from drug_named_entity_recognition import find_drugs
find_drugs("i bought some Phenoxymethylpenicillin".split(" "))

gibt eine Liste von Tupeln aus.

[({'name': 'Phenoxymethylpenicillin',
'synonyms': {'Penicillin', 'Phenoxymethylpenicillin'},
'nhs_url': 'https://www.nhs.uk/medicines/phenoxymethylpenicillin',
'drugbank_id': 'DB00417'},
3,
3)]

Beispiel 2

Sie können die Groß-/Kleinschreibung ignorieren bei:

find_drugs("i bought some phenoxymethylpenicillin".split(" "),
    is_ignore_case=True)

Kompatibilität mit anderen Bibliotheken zur natürlichen Sprachverarbeitung

Die Drug Named Entity Recognition-Bibliothek ist unabhängig von anderen NLP-Tools und weist keine Abhängigkeiten auf. Sie benötigen keine erweiterten Systemanforderungen und das Tool ist leichtgewichtig. Es lässt sich jedoch gut mit anderen Bibliotheken wie spaCy oder dem Natural Language Toolkit (NLTK) kombinieren.

Verwendung der Drug Named Entity Recognition zusammen mit spaCy

Hier ist ein Beispielaufruf des Tools mit einem spaCy Doc-Objekt:

from drug_named_entity_recognition import find_drugs
import spacy
nlp = spacy.blank("en")
doc = nlp("i routinely rx rimonabant and pts prefer it")
find_drugs([t.text for t in doc], is_ignore_case=True)

Ausgänge:

[({'name': 'Rimonabant', 'synonyms': {'Acomplia', 'Rimonabant', 'Zimulti'}, 'mesh_id': 'D063387', 'drugbank_id': 'DB06155'}, 3, 3)]

Verwendung der Drug Named Entity Recognition zusammen mit NLTK

Sie können das Tool auch zusammen mit dem Natural Language Toolkit (NLTK) verwenden:

from drug_named_entity_recognition import find_drugs
from nltk.tokenize import wordpunct_tokenize
tokens = wordpunct_tokenize("i routinely rx rimonabant and pts prefer it")
find_drugs(tokens, is_ignore_case=True)

Datenquellen

Die Hauptdatenquelle ist Drugbank, ergänzt durch Datensätze von NHS, MeSH, Medline Plus und Wikipedia.

Aktualisieren Sie das Drugbank-Wörterbuch

Wenn Sie das Wörterbuch aktualisieren möchten, können Sie den Datendump von Drugbank verwenden und die Datei drugbank vocabulary.csv ersetzen:

Laden Sie den Open Data Dump von https://go.drugbank.com/releases/latest#open-data herunter.

Aktualisieren Sie das Wikipedia-Wörterbuch

Wenn Sie das Wikipedia-Wörterbuch aktualisieren möchten, laden Sie den Dump von Wikimedia herunter und führen Sie aus

python extract_drug_names_and_synonyms_from_wikipedia_dump.py

Aktualisieren Sie das MeSH-Wörterbuch

Wenn Sie das Wörterbuch aktualisieren möchten, führen Sie aus

und Renn

python download_mesh_dump_and_extract_drug_names_and_synonyms.py

Wenn der Link nicht funktioniert, laden Sie den Open Data Dump manuell von https://www.nlm.nih.gov/ herunter. Er sollte etwa desc2023.xml heißen. Und kommentieren Sie die Wget/Curl-Befehle im Code aus.

Lizenzinformationen für externe Datenquellen

  • Daten von Drugbank sind unter CC0 lizenziert.
Soweit gesetzlich möglich, hat die Person, die CC0 mit den DrugBank Open Data verknüpft hat, auf alle Urheberrechte und verwandten oder benachbarten Rechte an den DrugBank Open Data verzichtet. Dieses Werk wird veröffentlicht von: Kanada.

Probleme ansprechen

Wenn Sie ein Problem finden, können Sie es gerne unter https://github.com/fastdatascience/drug_named_entity_recognition/issues melden.

Wer hat an der Drug Named Entity Recognition-Bibliothek gearbeitet?

Das Tool wurde entwickelt:

Lizenz der Drug Named Entity Recognition-Bibliothek

MIT-Lizenz. Copyright (c) 2023 Fast Data Science

Zitieren der Drug Named Entity Recognition-Bibliothek

DOI

Wood, TA, Drug Named Entity Recognition [Computersoftware], Version 1.0.3, abgerufen unter https://fastdatascience.com/drug-named-entity-recognition-python-library , Fast Data Science Ltd (2024)

@unpublished{drugnamedentityrecognition,
    AUTHOR = {Wood, T.A.},
    TITLE  = {Drug Named Entity Recognition (Computer software), Version 1.0.3},
    YEAR   = {2024},
    Note   = {To appear},
    url = {https://zenodo.org/doi/10.5281/zenodo.10970631},
    doi = {10.5281/zenodo.10970631}
}

What we can do for you

Transform Unstructured Data into Actionable Insights

Contact us