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 Open-Source-Python-Bibliothek namens Drug Named Entity Recognition zum Auffinden von Medikamentennamen in einer Zeichenfolge bereitgestellt. Zum Beispiel: „Ich habe Phenoxymethylpenicillin gekauft“. Diese NLP-Aufgabe wird benannte Entitätserkennung (Suche nach Medikamentennamen im Text) und benannte Entitätsverknüpfung (Medikamente IDs zuordnen) genannt.

Bitte beachten Sie, dass die Drug Named Entity Recognition nur Arzneimittel mit hoher Zuverlässigkeit findet. Es werden auch keine kurzen Codenamen von Arzneimitteln gefunden, wie etwa in der Medizin gebräuchliche 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

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 ist auf Github und das Projekt auf Pypi .

Hand holding a bottle of chemicals

Sind Sie an anderen Arten der Named Entity Recognition (NER) interessiert? Finanzen, Firmennamen, Länder, Standorte, Proteine, Gene, Moleküle?

Wenn Ihr NER-Problem branchenübergreifend auftritt und wahrscheinlich schon einmal aufgetreten ist, gibt es möglicherweise ein handelsübliches NER-Tool für Ihre Zwecke, wie zum Beispiel unsere Python-Bibliothek zur Country Named Entity Recognition . Die wörterbuchbasierte Erkennung benannter Entitäten ist nicht immer die Lösung, da manchmal die Gesamtmenge der Entitäten eine offene Menge 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 Finden von E-Mail-Adressen oder Telefonnummern reichen reguläre Ausdrücke (einfache Regeln) aus.

Wenn Ihr Problem bei der Erkennung benannter Entitäten oder bei der Verknüpfung benannter Entitäten sehr spezifisch 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, um das endgültige Problem zu lösen Meile, als wenn Sie das Ganze manuell erledigt hätten. Bitte kontaktieren Sie Fast Data Science und wir freuen uns auf ein Gespräch. Beispielsweise haben wir an einem Beratungsauftrag gearbeitet, um Molekülnamen in Veröffentlichungen zu finden und Autorennamen mit Kunden abzugleichen, wobei das Ziel darin bestand, bei einem Pharmaunternehmen bestellte Molekülproben zurückzuverfolgen und festzustellen, wann die Proben zu einer Veröffentlichung führten. In diesem Fall gab es keine Standardbibliothek, die wir verwenden konnten.

Für ein Problem wie die Identifizierung von Ländernamen im Englischen ist normalerweise eine geschlossene Menge mit bekannten Varianten und Aliasnamen sowie eine Standardbibliothek verfügbar.

Bei der Identifizierung einer Reihe von Molekülen, die von einem bestimmten Unternehmen hergestellt werden, ist diese Art von Aufgabe eher für einen Beratungsauftrag geeignet.

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 mit:

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

Kompatibilität mit anderen Bibliotheken zur Verarbeitung natürlicher Sprache

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 stammt von 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 ihn 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 es aus

und Renn

python download_mesh_dump_and_extract_drug_names_and_synonyms.py

Wenn der Link nicht funktioniert, laden Sie den offenen Daten-Dump manuell von https://www.nlm.nih.gov/ herunter. Es 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 in Verbindung gebracht hat, auf alle Urheberrechte und verwandten oder verwandten Rechte an den DrugBank Open Data verzichtet. Dieses Werk wurde veröffentlicht in: 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

Unter Berufung auf die Drug Named Entity Recognition-Bibliothek

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

@unpublished{countrynamedentityrecognition,
    AUTHOR = {Wood, T.A.},
    TITLE  = {Drug Named Entity Recognition (Computer software), Version 1.0.1},
    YEAR   = {2023},
    Note   = {To appear},
    url = {https://fastdatascience.com/drug-named-entity-recognition-python-library/}
}

What we can do for you

Transform Unstructured Data into Actionable Insights

Contact us