Ich habe bereits gezeigt, wie es geht einen Wissensgraphen aus einer Wikipedia-Seite erstellen. Da der Beitrag jedoch viel Aufmerksamkeit erhielt, habe ich mich entschieden, andere Bereiche zu erkunden, in denen die Verwendung von NLP-Techniken zum Erstellen eines Wissensgraphen sinnvoll ist. Meiner Meinung nach ist der biomedizinische Bereich ein Paradebeispiel, wo die Darstellung der Daten als Diagramm sinnvoll ist, da Sie häufig Wechselwirkungen und Beziehungen zwischen Genen, Krankheiten, Medikamenten, Proteinen und mehr analysieren.
In der obigen Visualisierung haben wir Ascorbinsäure, auch bekannt als Vitamin C, und einige ihrer Beziehungen zu anderen Konzepten. Es zeigt zum Beispiel, dass Vitamin C zur Behandlung von chronischer Gastritis eingesetzt werden könnte.
Jetzt könnten Sie ein Team von Fachexperten haben, die all diese Verbindungen zwischen Medikamenten, Krankheiten und anderen biomedizinischen Konzepten für Sie abbilden. Aber leider können es sich nicht viele von uns leisten, ein Team von Ärzten einzustellen, die die Arbeit für uns erledigen. In diesem Fall können wir auf NLP-Techniken zurückgreifen, um diese Beziehungen automatisch zu extrahieren. Der gute Teil ist, dass wir eine NLP-Pipeline verwenden können, um alle Forschungsarbeiten zu lesen, und der schlechte Teil ist, dass nicht alle erzielten Ergebnisse perfekt sein werden. Da ich jedoch kein Team von Wissenschaftlern an meiner Seite habe, um Beziehungen manuell zu extrahieren, werde ich auf die Verwendung von NLP-Techniken zurückgreifen, um einen eigenen biomedizinischen Wissensgraphen zu erstellen.
Ich werde in diesem Blogbeitrag ein einzelnes Forschungspapier verwenden, um Sie durch alle Schritte zu führen, die zum Erstellen eines biomedizinischen Wissensgraphen erforderlich sind – Tissue Engineering der Hautregeneration und des Haarwachstums.
Das Papier wurde geschrieben von Mohammedreza Ahmadi. Die PDF-Version des Artikels ist unter der Lizenz CC0 1.0 verfügbar. Wir werden die folgenden Schritte durchlaufen, um einen Wissensgraphen zu erstellen:
- Lesen eines PDF-Dokuments mit OCR
- Textvorverarbeitung
- Erkennung und Verknüpfung von biomedizinischen Konzepten
- Beziehungsextraktion
- Externe Datenbankanreicherung
Am Ende dieses Beitrags konstruieren Sie ein Diagramm mit dem folgenden Schema.
Wir werden Neo4j verwenden, eine Diagrammdatenbank, die das beschriftete Eigenschaftsdiagrammmodell enthält, um unser Diagramm zu speichern. Jeder Artikel kann einen oder mehrere Autoren haben. Wir werden den Inhalt des Artikels in Sätze aufteilen und NLP verwenden, um sowohl medizinische Einheiten als auch ihre Beziehungen zu extrahieren. Es mag ein wenig kontraintuitiv sein, dass wir die Beziehungen zwischen Entitäten als Zwischenknoten anstelle von Beziehungen speichern. Der entscheidende Faktor hinter dieser Entscheidung ist, dass wir einen Audit-Trail des Quelltextes haben möchten, aus dem die Relation extrahiert wurde. Mit dem beschrifteten Eigenschaftsdiagrammmodell können Sie keine Beziehung haben, die auf eine andere Beziehung zeigt. Aus diesem Grund refaktorisieren wir die Verbindung zwischen medizinischen Konzepten in einen Zwischenknoten. Dadurch kann ein Domänenexperte auch beurteilen, ob eine Beziehung korrekt extrahiert wurde oder nicht.
Nebenbei werde ich auch Anwendungen demonstrieren, wie der konstruierte Graph verwendet wird, um gespeicherte Informationen zu suchen und zu analysieren.
Tauchen wir gleich ein!
Wenn dieser ausführliche Bildungsinhalt für Sie nützlich ist, Abonnieren Sie unsere AI Research Mailingliste benachrichtigt werden, wenn wir neues Material veröffentlichen.
Lesen eines PDF-Dokuments mit OCR
Wie bereits erwähnt, ist die PDF-Version des Forschungspapiers unter der Lizenz CC0 1.0 öffentlich zugänglich, was bedeutet, dass wir es einfach mit Python herunterladen können. Wir werden die verwenden Pytesseract Bibliothek zum Extrahieren von Text aus dem PDF. Soweit ich weiß, ist die Pytesseract-Bibliothek eine der beliebtesten Bibliotheken für OCR. Wenn Sie Codebeispiele mitverfolgen möchten, habe ich a vorbereitet Google Colab-Notizbuch, sodass Sie den Code nicht selbst kopieren und einfügen müssen.
import requests import pdf2image import pytesseract pdf = requests.get('https://arxiv.org/pdf/2110.03526.pdf') doc = pdf2image.convert_from_bytes(pdf.content) # Get the article text article = [] for page_number, page_data in enumerate(doc): txt = pytesseract.image_to_string(page_data).encode("utf-8") # Sixth page are only references if page_number < 6: article.append(txt.decode("utf-8")) article_txt = " ".join(article)Textvorverarbeitung
Da uns nun der Artikelinhalt zur Verfügung steht, werden wir Abschnittstitel und Abbildungsbeschreibungen aus dem Text entfernen. Als nächstes teilen wir den Text in Sätze auf.
import nltk nltk.download('punkt') def clean_text(text): """Remove section titles and figure descriptions from text""" clean = "n".join([row for row in text.split("n") if (len(row.split(" "))) > 3 and not (row.startswith("(a)")) and not row.startswith("Figure")]) return clean text = article_txt.split("INTRODUCTION")[1] ctext = clean_text(text) sentences = nltk.tokenize.sent_tokenize(ctext)Verknüpfung von biomedizinischen benannten Entitäten
Jetzt kommt der spannende Teil. Für diejenigen, die neu in NLP und in der Erkennung und Verknüpfung benannter Entitäten sind, beginnen wir mit einigen Grundlagen. Techniken zur Erkennung benannter Entitäten werden verwendet, um relevante Entitäten oder Konzepte im Text zu erkennen. Im biomedizinischen Bereich möchten wir beispielsweise verschiedene Gene, Medikamente, Krankheiten und andere Konzepte im Text identifizieren.
In diesem Beispiel identifizierte das NLP-Modell Gene, Krankheiten, Medikamente, Arten, Mutationen und Signalwege im Text. Wie bereits erwähnt, wird dieser Vorgang als Named Entity Recognition bezeichnet. Eine Erweiterung zur Named-Entity-Erkennung ist das sogenannte Named-Entity-Linking. Die benannte Entitätsverknüpfungstechnik erkennt relevante Konzepte im Text und versucht, sie der Ziel-Wissensbasis zuzuordnen. Im biomedizinischen Bereich sind einige der angestrebten Wissensbasen:
Warum sollten wir medizinische Einheiten mit einer Ziel-Wissensdatenbank verknüpfen? Der Hauptgrund ist, dass es uns hilft, mit der Disambiguierung von Entitäten umzugehen. Beispielsweise möchten wir keine getrennten Entitäten im Diagramm, die Ascorbinsäure und Vitamin C darstellen, da Domänenexperten Ihnen sagen können, dass dies dasselbe ist. Der zweite Grund ist, dass wir durch das Abbilden von Konzepten auf eine Ziel-Wissensbasis unser Graphenmodell bereichern können, indem wir Informationen über die abgebildeten Konzepte aus der Ziel-Wissensbasis abrufen. Wenn wir das Ascorbinsäure-Beispiel noch einmal verwenden, könnten wir leicht zusätzliche Informationen aus der CHEBI-Datenbank abrufen, wenn wir sie bereits kennen CHEBI-Ident.
Ich habe seit einiger Zeit nach einer anständigen vortrainierten biomedizinischen benannten Entitätsverknüpfung auf Open-Source-Basis gesucht. Viele NLP-Modelle konzentrieren sich darauf, nur eine bestimmte Teilmenge medizinischer Konzepte wie Gene oder Krankheiten zu extrahieren. Es ist noch seltener, ein Modell zu finden, das die meisten medizinischen Konzepte erkennt und sie mit einer Ziel-Wissensbasis verknüpft. Zum Glück bin ich darüber gestolpert BERN[1], ein Werkzeug zur Erkennung neuronaler biomedizinischer Entitäten und zur Normalisierung mehrerer Typen. Wenn ich das richtig verstehe, handelt es sich um ein fein abgestimmtes BioBert-Modell mit verschiedenen benannten Entitätsverknüpfungsmodellen, die integriert sind, um Konzepte auf biomedizinische Zielwissensbasen abzubilden. Nicht nur das, sie bieten auch einen kostenlosen REST-Endpunkt, sodass wir uns nicht mit den Kopfschmerzen herumschlagen müssen, um die Abhängigkeiten und das Modell zum Laufen zu bringen. Die oben verwendete biomedizinische Visualisierung zur Erkennung benannter Entitäten wurde mit dem BERN-Modell erstellt, sodass wir wissen, dass es Gene, Krankheiten, Medikamente, Arten, Mutationen und Signalwege im Text erkennt.
Leider weist das BERN-Modell nicht allen Konzepten Ziel-Wissensdatenbank-IDs zu. Also habe ich ein Skript vorbereitet, das zuerst prüft, ob für ein Konzept eine eindeutige ID angegeben ist, und wenn dies nicht der Fall ist, verwendet es den Entitätsnamen als ID. Wir werden auch den sha256 des Texts von Sätzen berechnen, um bestimmte Sätze später leichter zu identifizieren, wenn wir die Beziehungsextraktion durchführen.
import hashlib def query_raw(text, url="https://bern.korea.ac.kr/plain"): """Biomedical entity linking API""" return requests.post(url, data={'sample_text': text}).json() entity_list = [] # The last sentence is invalid for s in sentences[:-1]: entity_list.append(query_raw(s)) parsed_entities = [] for entities in entity_list: e = [] # If there are not entities in the text if not entities.get('denotations'): parsed_entities.append({'text':entities['text'], 'text_sha256': hashlib.sha256(entities['text'].encode('utf-8')).hexdigest()}) continue for entity in entities['denotations']: other_ids = [id for id in entity['id'] if not id.startswith("BERN")] entity_type = entity['obj'] entity_name = entities['text'][entity['span']['begin']:entity['span']['end']] try: entity_id = [id for id in entity['id'] if id.startswith("BERN")][0] except IndexError: entity_id = entity_name e.append({'entity_id': entity_id, 'other_ids': other_ids, 'entity_type': entity_type, 'entity': entity_name}) parsed_entities.append({'entities':e, 'text':entities['text'], 'text_sha256': hashlib.sha256(entities['text'].encode('utf-8')).hexdigest()})Ich habe die Ergebnisse der benannten Entitätsverknüpfung überprüft, und wie erwartet ist sie nicht perfekt. Beispielsweise werden Stammzellen nicht als medizinisches Konzept identifiziert. Auf der anderen Seite entdeckte es eine einzelne Entität namens „Herz, Gehirn, Nerven und Niere“. BERN ist jedoch immer noch das beste biomedizinische Open-Source-Modell, das ich während meiner Untersuchung finden konnte.
Konstruieren Sie einen Wissensgraphen
Bevor wir uns mit Techniken zur Extraktion von Beziehungen befassen, werden wir einen biomedizinischen Wissensgraphen erstellen, der nur Entitäten verwendet, und die möglichen Anwendungen untersuchen. Wie bereits erwähnt, habe ich eine vorbereitet Google Colab-Notizbuch die Sie verwenden können, um den Codebeispielen in diesem Beitrag zu folgen. Um unser Diagramm zu speichern, verwenden wir Neo4j. Sie müssen sich nicht mit der Vorbereitung einer lokalen Neo4j-Umgebung befassen. Stattdessen können Sie eine kostenlose Neo4j-Sandbox-Instanz verwenden.
Starte das Leeres Projekt in der Sandbox und kopieren Sie die Verbindungsdetails in das Colab-Notebook.
Jetzt können Sie die Neo4j-Verbindung im Notebook vorbereiten.
from neo4j import GraphDatabase import pandas as pd host = 'bolt://3.236.182.55:7687' user = 'neo4j' password = 'hydrometer-ditches-windings' driver = GraphDatabase.driver(host,auth=(user, password)) def neo4j_query(query, params=None): with driver.session() as session: result = session.run(query, params) return pd.DataFrame([r.values() for r in result], columns=result.keys())Wir beginnen damit, den Autor und den Artikel in die Grafik zu importieren. Der Artikelknoten enthält nur den Titel.
author = article_txt.split("n")[0] title = " ".join(article_txt.split("n")[2:4]) neo4j_query(""" MERGE (a:Author{name:$author}) MERGE (b:Article{title:$title}) MERGE (a)-[:WROTE]->(b) """, {'title':title, 'author':author})Wenn Sie den Neo4j-Browser öffnen, sollten Sie die folgende Grafik sehen.
Sie können die Sätze und erwähnten Entitäten importieren, indem Sie die folgende Cypher-Abfrage ausführen:
neo4j_query(""" MATCH (a:Article) UNWIND $data as row MERGE (s:Sentence{id:row.text_sha256}) SET s.text = row.text MERGE (a)-[:HAS_SENTENCE]->(s) WITH s, row.entities as entities UNWIND entities as entity MERGE (e:Entity{id:entity.entity_id}) ON CREATE SET e.other_ids = entity.other_ids, e.name = entity.entity, e.type = entity.entity_type MERGE (s)-[m:MENTIONS]->(e) ON CREATE SET m.count = 1 ON MATCH SET m.count = m.count + 1 """, {'data': parsed_entities})Sie können die folgende Cypher-Abfrage ausführen, um den konstruierten Graphen zu untersuchen:
MATCH p=(a:Article)-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN p LIMIT 25
Wenn Sie die Daten korrekt importiert haben, sollten Sie eine ähnliche Visualisierung sehen.
Anwendungen für Wissensgraphen
Auch ohne den Beziehungsextraktionsfluss gibt es bereits einige Anwendungsfälle für unseren Graphen.
Suchmaschine
Wir könnten unser Diagramm als Suchmaschine verwenden. Beispielsweise könnten Sie die folgende Cypher-Abfrage verwenden, um Sätze oder Artikel zu finden, die eine bestimmte medizinische Entität erwähnen.
MATCH (e:Entity)<-[:MENTIONS]-(s:Sentence) WHERE e.name = "autoimmune diseases" RETURN s.text as result
Die Ergebnisse
Kookkurrenzanalyse
Die zweite Möglichkeit ist die Co-Occurrence-Analyse. Sie könnten das gleichzeitige Auftreten medizinischer Einheiten definieren, wenn sie im selben Satz oder Artikel vorkommen. Ich habe einen Artikel gefunden[2], der das medizinische Co-Occurrence-Netzwerk verwendet, um neue mögliche Verbindungen zwischen medizinischen Einheiten vorherzusagen.
Link-Vorhersage in einem MeSH-Kookkurrenz-Netzwerk: vorläufige Ergebnisse – PubMed
Sie können die folgende Cypher-Abfrage verwenden, um Entitäten zu finden, die häufig im selben Satz vorkommen.
MATCH (e1:Entity)<-[:MENTIONS]-()-[:MENTIONS]->(e2:Entity) MATCH (e1:Entity)<-[:MENTIONS]-()-[:MENTIONS]->(e2:Entity) WHERE id(e1) < id(e2) RETURN e1.name as entity1, e2.name as entity2, count(*) as cooccurrence ORDER BY cooccurrence DESC LIMIT 3
Die Ergebnisse
Entität1 Entität2 gleichzeitiges Auftreten Hautkrankheiten diabetische Geschwüre 2 chronische Wunden diabetische Geschwüre 2 Hautkrankheiten chronische Wunden 2 Offensichtlich wären die Ergebnisse besser, wenn wir Tausende oder mehr Artikel analysieren würden.
Überprüfen Sie die Expertise des Autors
Sie können dieses Diagramm auch verwenden, um die Expertise des Autors zu ermitteln, indem Sie die medizinischen Einheiten untersuchen, über die er am häufigsten schreibt. Mit diesen Informationen können Sie auch zukünftige Kooperationen vorschlagen.
Führen Sie die folgende Cypher-Abfrage aus, um zu überprüfen, welche medizinischen Einrichtungen unser einziger Autor in der Forschungsarbeit erwähnt hat.
MATCH (a:Author)-[:WROTE]->()-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN a.name as author, e.name as entity, MATCH (a:Author)-[:WROTE]->()-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN a.name as author, e.name as entity, count(*) as count ORDER BY count DESC LIMIT 5
Die Ergebnisse
Autor Einheit zählen Mohammedreza Ahmadi Kollagen 9 Mohammedreza Ahmadi Verbrennungen 4 Mohammedreza Ahmadi Hautkrankheiten 4 Mohammedreza Ahmadi Kollagenase-Enzyme 2 Mohammedreza Ahmadi Epidermolysis bullosa 2 Beziehungsextraktion
Jetzt werden wir versuchen, Beziehungen zwischen medizinischen Konzepten zu extrahieren. Aus meiner Erfahrung ist die Extraktion von Beziehungen mindestens eine Größenordnung schwieriger als die Extraktion benannter Entitäten. Wenn Sie beim Named Entity Linking keine perfekten Ergebnisse erwarten sollten, dann können Sie definitiv mit einigen Fehlern bei der Beziehungsextraktionstechnik rechnen.
Ich habe nach verfügbaren biomedizinischen Beziehungsextraktionsmodellen gesucht, aber nichts gefunden, das sofort einsatzbereit ist oder keine Feinabstimmung erfordert. Es scheint, dass das Gebiet der Beziehungsextraktion an der Spitze steht, und wir werden hoffentlich in Zukunft mehr Aufmerksamkeit dafür sehen. Leider bin ich kein NLP-Experte, daher habe ich es vermieden, mein eigenes Modell zu verfeinern. Stattdessen verwenden wir den auf dem Papier basierenden Zero-Shot-Beziehungsextraktor Erkundung der Zero-Shot-Grenze von FewRel[3]. Obwohl ich nicht empfehlen würde, dieses Modell in Produktion zu nehmen, ist es gut genug für eine einfache Demonstration. Das Modell ist auf verfügbar Umarmendes Gesicht, sodass wir uns nicht mit dem Training oder der Einrichtung des Modells befassen müssen.
from transformers import AutoTokenizer from zero_shot_re import RelTaggerModel, RelationExtractor model = RelTaggerModel.from_pretrained("fractalego/fewrel-zero-shot") tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") relations = ['associated', 'interacts'] extractor = RelationExtractor(model, tokenizer, relations)Mit dem Zero-Shot Relation Extractor können Sie definieren, welche Relationen Sie erkennen möchten. In diesem Beispiel habe ich die verwendet damit verbundenen und interagiert Beziehungen. Ich habe auch spezifischere Beziehungstypen wie Leckereien, Ursachen und andere ausprobiert, aber die Ergebnisse waren nicht großartig.
Bei diesem Modell müssen Sie definieren, zwischen welchen Paaren von Entitäten Sie Beziehungen erkennen möchten. Wir werden die Ergebnisse der benannten Entitätsverknüpfung als Eingabe für den Beziehungsextraktionsprozess verwenden. Zuerst finden wir alle Sätze, in denen zwei oder mehr Entitäten erwähnt werden, und führen sie dann durch das Beziehungsextraktionsmodell, um alle Verbindungen zu extrahieren. Ich habe auch einen Schwellenwert von 0.85 definiert, was bedeutet, dass wir die Vorhersage ignorieren, wenn ein Modell eine Verbindung zwischen Entitäten mit einer Wahrscheinlichkeit von weniger als 0.85 vorhersagt.
import itertools # Candidate sentence where there is more than a single entity present candidates = [s for s in parsed_entities if (s.get('entities')) and (len(s['entities']) > 1)] predicted_rels = [] for c in candidates: combinations = itertools.combinations([{'name':x['entity'], 'id':x['entity_id']} for x in c['entities']], 2) for combination in list(combinations): try: ranked_rels = extractor.rank(text=c['text'].replace(",", " "), head=combination[0]['name'], tail=combination[1]['name']) # Define threshold for the most probable relation if ranked_rels[0][1] > 0.85: predicted_rels.append({'head': combination[0]['id'], 'tail': combination[1]['id'], 'type':ranked_rels[0][0], 'source': c['text_sha256']}) except: pass # Store relations to Neo4j neo4j_query(""" UNWIND $data as row MATCH (source:Entity {id: row.head}) MATCH (target:Entity {id: row.tail}) MATCH (text:Sentence {id: row.source}) MERGE (source)-[:REL]->(r:Relation {type: row.type})-[:REL]->(target) MERGE (text)-[:MENTIONS]->(r) """, {'data': predicted_rels})Wir speichern die Beziehungen sowie den Quelltext, der zum Extrahieren dieser Beziehung im Diagramm verwendet wird.
Sie können die extrahierten Beziehungen zwischen Entitäten und dem Quelltext mit der folgenden Cypher-Abfrage untersuchen:
MATCH (s:Entity)-[:REL]->(r:Relation)-[:REL]->(t:Entity), (r)<-[:MENTIONS]-(st:Sentence) RETURN s.name as source_entity, t.name as target_entity, r.type as type, st.text as source_text
Die Ergebnisse
Wie bereits erwähnt, ist das NLP-Modell, das ich zum Extrahieren von Beziehungen verwendet habe, nicht perfekt, und da ich kein Arzt bin, weiß ich nicht, wie viele Verbindungen es übersehen hat. Die erkannten scheinen jedoch vernünftig zu sein.
Externe Datenbankanreicherung
Wie ich bereits erwähnt habe, können wir immer noch die externen Datenbanken wie CHEBI oder MESH verwenden, um unsere Grafik anzureichern. Unser Diagramm enthält beispielsweise eine medizinische Entität Epidermolysis bullosa und wir kennen auch seine MeSH-ID.
Sie können die MeSH-ID von Epidermolysis bullosa mit der folgenden Abfrage abrufen:
MATCH (e:Entity) WHERE e.name = "Epidermolysis bullosa" RETURN e.name as entity, e.other_ids as other_ids
Sie könnten fortfahren und den MeSH untersuchen, um verfügbare Informationen zu finden:
Hier ist ein Screenshot der verfügbaren Informationen auf der MeSH-Website für Epidermolysis bullosa. Wie bereits erwähnt, bin ich kein Arzt, daher weiß ich nicht genau, wie ich diese Informationen am besten in einem Diagramm modellieren könnte. Ich zeige Ihnen jedoch, wie Sie diese Informationen in Neo4j mithilfe der Prozedur apoc.load.json abrufen, um die Informationen vom MeSH-REST-Endpunkt abzurufen. Und dann können Sie einen Domänenexperten bitten, Ihnen bei der Modellierung dieser Informationen zu helfen.
Die Cypher-Abfrage zum Abrufen der Informationen vom MeSH-REST-Endpunkt lautet:
MATCH (e:Entity) WHERE e.name = "Epidermolysis bullosa" WITH e, [id in e.other_ids WHERE id contains "MESH" | split(id,":")[1]][0] as meshId CALL apoc.load.json("https://id.nlm.nih.gov/mesh/lookup/details?descriptor=" + meshId) YIELD value RETURN value
Wissensgraph als Dateneingabe für maschinelles Lernen
Als abschließenden Gedanken werde ich Ihnen kurz erläutern, wie Sie den biomedizinischen Wissensgraphen als Eingabe für einen Arbeitsablauf für maschinelles Lernen verwenden können. In den letzten Jahren gab es viel Forschung und Weiterentwicklung auf dem Gebiet der Knoteneinbettung. Knoteneinbettungsmodelle übersetzen die Netzwerktopologie in Einbettungsraum.
Angenommen, Sie haben einen biomedizinischen Wissensgraphen erstellt, der medizinische Einheiten und Konzepte, ihre Beziehungen und Anreicherungen aus verschiedenen medizinischen Datenbanken enthält. Sie könnten Techniken zum Einbetten von Knoten verwenden, um die Knotendarstellungen zu lernen, bei denen es sich um Vektoren mit fester Länge handelt, und sie in Ihren Arbeitsablauf für maschinelles Lernen einzugeben. Verschiedene Anwendungen verwenden diesen Ansatz, von der Wiederverwendung von Arzneimitteln bis hin zu Vorhersagen von Nebenwirkungen oder Nebenwirkungen von Arzneimitteln. Ich habe eine Forschungsarbeit gefunden, die verwendet Verknüpfungsvorhersage für potenzielle Behandlungen neuer Krankheiten[4].
Zusammenfassung
Der biomedizinische Bereich ist ein Paradebeispiel für die Anwendung von Wissensgraphen. Es gibt viele Anwendungen, die von einfachen Suchmaschinen bis hin zu komplizierteren Workflows für maschinelles Lernen reichen. Hoffentlich sind Ihnen beim Lesen dieses Blogbeitrags einige Ideen gekommen, wie Sie biomedizinische Wissensgraphen zur Unterstützung Ihrer Anwendungen verwenden könnten. Sie können eine starten kostenlose Neo4j-Sandbox und beginnen Sie noch heute mit der Erkundung.
Den Code gibt es wie immer unter GitHub.
Bibliographie
[1] D.Kim et al., „Ein neuronales Erkennungs- und Multityp-Normalisierungstool für benannte Entitäten für biomedizinisches Text-Mining“, in IEEE-Zugriff, Bd. 7, S. 73729–73740, 2019, doi: 10.1109/ACCESS.2019.2920708.
[2] Kastrin A, Rindflesch TC, Hristovski D. Link-Vorhersage in einem MeSH-Co-Occurrence-Netzwerk: vorläufige Ergebnisse. Stud Health Technology Inform. 2014;205:579–83. PMID: 25160252.
[3] Cetoli, A. (2020). Erkundung der Zero-Shot-Grenze von FewRel. Im Tagungsband der 28. Internationalen Konferenz für Computerlinguistik (S. 1447–1451). Internationales Komitee für Computerlinguistik.
[4] Zhang, R., Hristovski, D., Schutte, D., Kastrin, A., Fiszman, M., & Kilicoglu, H. (2021). Umwidmung von Arzneimitteln für COVID-19 durch Vervollständigung von Wissensgraphen. Zeitschrift für Biomedizinische Informatik, 115, 103696.
Dieser Artikel wurde ursprünglich veröffentlicht am Auf dem Weg zu Data Science und mit Genehmigung des Autors erneut auf TOPBOTS veröffentlicht.
Genießen Sie diesen Artikel? Melden Sie sich für weitere AI-Updates an.
Wir werden Sie informieren, wenn wir mehr technische Ausbildung veröffentlichen.
Die Post Erstellen Sie einen biomedizinischen Wissensgraphen mit NLP erschien zuerst auf TOPBOTS.
- '
- "
- &
- 10
- 11
- 2019
- 2020
- 2021
- 7
- 9
- a
- Über uns
- zugänglich
- Zusätzliche
- Verwaltung
- Neben
- voraus
- AI
- ai Forschung
- Alle
- bereits
- immer
- amp
- Analyse
- Analytik
- analysieren
- Ein anderer
- anwendbar
- Anwendungen
- angewandt
- Anwendung
- Ansatz
- Artikel
- Artikel
- damit verbundenen
- Aufmerksamkeit
- Prüfung
- Autoren
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- Grundlagen
- Bevor
- unten
- BESTE
- zwischen
- Größte
- Bit
- Blog
- Bolt
- Box
- Browser
- Geschäft
- rufen Sie uns an!
- Kandidat
- Kandidaten
- Häuser
- Fälle
- Ursachen
- challenges
- Code
- Kombination
- Kombinationen
- Berechnen
- konzept
- Konferenz
- Verbindung
- Verbindungen
- enthält
- Inhalt
- fortsetzen
- könnte
- Paar
- COVID-19
- erstellen
- erstellt
- kritischem
- Kunde
- Kundensupport
- technische Daten
- Datenbase
- Datenbanken
- Deal
- entschieden
- Entscheidung
- zeigen
- weisen nach, dass
- beschreiben
- Details
- erkannt
- Krankheiten
- Arzt
- Ärzte
- Tut nicht
- Domain
- Domains
- herunterladen
- Fahrer
- Medikament
- Drogen
- im
- jeder
- leicht
- Edge
- Bildungswesen
- Bildungs-
- bewirken
- Endpunkt
- Motor
- Entwicklung
- bereichern
- Entitäten
- Einheit
- Arbeitsumfeld
- bewerten
- Event
- genau
- Beispiel
- Beispiele
- Außer
- unterhaltsame Programmpunkte
- erwarten
- erwartet
- ERFAHRUNGEN
- Experte
- Expertise
- Experten
- ERKUNDEN
- Eigenschaften
- Abbildung
- Finanzen
- Vorname
- Fluss
- Setzen Sie mit Achtsamkeit
- folgen
- Folgende
- gefunden
- Frei
- für
- Zukunft
- bekommen
- gut
- groß
- Gruppe an
- Haarfarbe
- ganzer
- Gesundheit
- Hilfe
- hilft
- Verleih
- Ultraschall
- Hilfe
- aber
- hr
- HTTPS
- Ideen
- identifizieren
- Image
- Einfuhr
- Information
- Eingabe
- Instanz
- integriert
- International
- Untersuchung
- IT
- Zeitschrift
- Wissen
- Wissen
- bekannt
- Korea
- LERNEN
- lernen
- Rechtlich
- Bibliothek
- Lizenz
- LIMIT
- LINK
- Linking
- Links
- Belastung
- aus einer regionalen
- suchen
- Maschine
- Maschinelles Lernen
- MACHT
- manuell
- Karte
- Mapping
- Marketing
- Spiel
- Ihres Materials
- Bedeutung
- Mittel
- sowie medizinische
- Medizin
- mittlere
- erwähnt
- Erwähnungen
- könnte
- Bergbau
- Fehler
- MIT
- Modell
- für
- mehr
- vor allem warme
- National
- Netzwerk
- NIH
- Fiber Node
- Notizbuch
- erhalten
- XNUMXh geöffnet
- Einkauf & Prozesse
- Meinung
- Option
- Auftrag
- Andere
- besitzen
- Papier
- Teil
- Passwort
- perfekt
- Bitte
- Beliebt
- möglich
- Potenzial
- vorhersagen
- Prognose
- Prognosen
- Danach
- Gegenwart
- primär
- Prozessdefinierung
- Produkt
- Produktion
- Projekt
- Resorts
- die
- Öffentlichkeit
- schnell
- Bereich
- Lesebrillen
- vernünftig
- kürzlich
- empfehlen
- Verhältnis
- Beziehung
- Beziehungen
- Release
- relevant
- Darstellen
- Zugriffe
- erfordern
- falls angefordert
- Forschungsprojekte
- Resort
- REST
- Die Ergebnisse
- Rückkehr
- Führen Sie
- Vertrieb
- gleich
- Sandkasten
- Wissenschaftler
- Suche
- Suchmaschine
- Suchmaschinen
- Sekundär-
- Sinn
- kompensieren
- Einstellung
- Schild
- ähnlich
- Einfacher
- da
- Single
- sechste
- Haut
- Schnappen
- So
- einige
- Raumfahrt
- spezifisch
- gespalten
- Anfang
- Vorbau
- Immer noch
- speichern
- Support
- Target
- Team
- Technische
- Techniken
- Das
- Die Quelle
- Ding
- Tausende
- Schwelle
- Durch
- Zeit
- Titel
- heute
- Werkzeug
- Ausbildung
- behandeln
- Typen
- uns
- für
- verstehen
- Updates
- us
- -
- Anwendungsfälle
- Wert
- verschiedene
- Version
- Visualisierung
- Webseite
- Was
- während
- Wikipedia
- ohne
- Arbeiten
- Workflows
- Werk
- würde
- X
- Jahr
- Ausbeute
- Ihr