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.
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 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 .
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.
In Ihrer Python-Konsole können Sie Folgendes versuchen:
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)]
Sie können die Groß-/Kleinschreibung ignorieren mit:
find_drugs("i bought some phenoxymethylpenicillin".split(" "), is_ignore_case=True)
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.
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)]
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)
Die Hauptdatenquelle stammt von Drugbank, ergänzt durch Datensätze von NHS, MeSH, Medline Plus und Wikipedia.
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
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
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.
„ 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. „
Wenn Sie ein Problem finden, können Sie es gerne unter https://github.com/fastdatascience/drug_named_entity_recognition/issues melden
Das Tool wurde entwickelt:
MIT-Lizenz. Copyright (c) 2023 Fast Data Science
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