Maak een biomedische kenniskaart met NLP

Bronknooppunt: 1401511

Ik heb al laten zien hoe je maak een kennisgrafiek van een Wikipedia-pagina. Omdat het bericht echter veel aandacht kreeg, heb ik besloten om andere domeinen te verkennen waar het zinvol is om NLP-technieken te gebruiken om een ​​kennisgrafiek te maken. Naar mijn mening is het biomedische veld een goed voorbeeld waar het logisch is om de gegevens als een grafiek weer te geven, omdat je vaak interacties en relaties tussen genen, ziekten, medicijnen, eiwitten en meer analyseert.

Voorbeeld subgrafiek die ascorbinezuur relaties met andere biomedische concepten laat zien. Afbeelding door de auteur.

In de bovenstaande visualisatie hebben we ascorbinezuur, ook bekend als vitamine C, en enkele van zijn relaties met andere concepten. Het laat bijvoorbeeld zien dat vitamine C kan worden gebruikt om chronische gastritis te behandelen.

Nu zou je een team van domeinexperts kunnen hebben die al die verbanden tussen medicijnen, ziekten en andere biomedische concepten voor je in kaart brengen. Maar helaas kunnen niet velen van ons het zich veroorloven een team van artsen in te huren om het werk voor ons te doen. In dat geval kunnen we gebruik maken van NLP-technieken om die relaties automatisch te extraheren. Het goede is dat we een NLP-pijplijn kunnen gebruiken om alle onderzoekspapers te lezen die er zijn, en het slechte is dat niet alle verkregen resultaten perfect zullen zijn. Aangezien ik echter geen team van wetenschappers aan mijn zijde heb om handmatig relaties te extraheren, zal ik mijn toevlucht nemen tot het gebruik van NLP-technieken om mijn eigen biomedische kennisgrafiek te maken.

Ik zal een enkel onderzoeksartikel in deze blogpost gebruiken om je door alle stappen te leiden die nodig zijn om een ​​biomedische kennisgrafiek te maken - Tissue Engineering van huidregeneratie en haargroei.

Het papier is geschreven door Mohammedreza Ahmadi. De PDF-versie van het artikel is beschikbaar onder de CC0 1.0-licentie. We zullen de volgende stappen doorlopen om een ​​kennisgrafiek te maken:

  • Een PDF-document lezen met OCR
  • Voorbewerking van tekst
  • Biomedische conceptherkenning en koppeling
  • Relatie extractie
  • Externe databaseverrijking

Aan het einde van dit bericht maakt u een grafiek met het volgende schema.

Biomedisch grafiekschema. Afbeelding door de auteur.

We zullen Neo4j gebruiken, een grafiekdatabase met het gelabelde eigenschapsgrafiekmodel, om onze grafiek op te slaan. Elk artikel kan een of meer auteurs hebben. We zullen de inhoud van het artikel in zinnen splitsen en NLP gebruiken om zowel medische entiteiten als hun relaties te extraheren. Het is misschien een beetje contra-intuïtief dat we de relaties tussen entiteiten opslaan als tussenliggende knooppunten in plaats van relaties. De kritische factor achter deze beslissing is dat we een audit trail willen hebben van de brontekst waaruit de relatie is geëxtraheerd. Met het gelabelde eigenschapsgrafiekmodel kunt u geen relatie hebben die naar een andere relatie verwijst. Om deze reden herfactoren we de verbinding tussen medische concepten tot een tussenknooppunt. Hierdoor kan een domeinexpert ook beoordelen of een relatie correct is geëxtraheerd of niet.

Onderweg zal ik ook toepassingen demonstreren voor het gebruik van de geconstrueerde grafiek om opgeslagen informatie te zoeken en te analyseren.

Laten we er meteen in duiken!

Als deze diepgaande educatieve inhoud nuttig voor u is, abonneer u op onze AI-research mailinglijst om gewaarschuwd te worden wanneer we nieuw materiaal uitbrengen.

Een PDF-document lezen met OCR

Zoals vermeld, is de pdf-versie van de onderzoekspaper toegankelijk voor het publiek onder de CC0 1.0-licentie, wat betekent dat we deze gemakkelijk kunnen downloaden met Python. We zullen de gebruiken pytesseract bibliotheek om tekst uit de PDF te extraheren. Voor zover ik weet, is de pytesseract-bibliotheek een van de meer populaire bibliotheken voor OCR. Als je de codevoorbeelden wilt volgen, heb ik een Google Colab-notebook, zodat u de code niet zelf hoeft te kopiëren en plakken.

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)

Voorbewerking van tekst

Nu we de inhoud van het artikel beschikbaar hebben, gaan we verder met het verwijderen van sectietitels en figuurbeschrijvingen uit de tekst. Vervolgens splitsen we de tekst in zinnen.

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)

Biomedische benoemde entiteiten koppelen

Nu komt het spannende deel. Voor degenen die nieuw zijn in NLP en benoemde entiteiten herkennen en koppelen, laten we beginnen met enkele basisprincipes. Genoemde entiteitsherkenningstechnieken worden gebruikt om relevante entiteiten of concepten in de tekst te detecteren. In het biomedische domein willen we bijvoorbeeld verschillende genen, medicijnen, ziekten en andere concepten in de tekst identificeren.

Biomedische concepten extractie. Afbeelding door de auteur.

In dit voorbeeld identificeerde het NLP-model genen, ziekten, medicijnen, soorten, mutaties en paden in de tekst. Zoals vermeld, wordt dit proces benoemde entiteitsherkenning genoemd. Een upgrade naar de benoemde entiteitherkenning is de zogenaamde benoemde entiteitskoppeling. De benoemde entiteitskoppelingstechniek detecteert relevante concepten in de tekst en probeert deze in kaart te brengen in de doelkennisbank. In het biomedische domein zijn enkele van de beoogde kennisbanken:

Waarom zouden we medische entiteiten willen koppelen aan een doelkennisbank? De belangrijkste reden is dat het ons helpt om te gaan met het ondubbelzinnig maken van entiteiten. We willen bijvoorbeeld geen afzonderlijke entiteiten in de grafiek die ascorbinezuur en vitamine C vertegenwoordigen, aangezien domeinexperts u kunnen vertellen dat dit hetzelfde is. De tweede reden is dat door concepten toe te wijzen aan een doelkennisbank, we ons grafiekmodel kunnen verrijken door informatie over de in kaart gebrachte concepten op te halen uit de doelkennisbank. Als we het voorbeeld van ascorbinezuur opnieuw gebruiken, zouden we gemakkelijk aanvullende informatie uit de CHEBI-database kunnen halen als we het al weten CHEBI-id.

Verrijkingsgegevens beschikbaar over ascorbinezuur op de CHEBI-website. Alle inhoud op de website is beschikbaar onder: CC BY 4.0-licentie. Afbeelding door de auteur.

Ik ben al een tijdje op zoek naar een fatsoenlijke open-source voorgetrainde biomedische benoemde entiteit die linkt. Veel NLP-modellen zijn gericht op het extraheren van slechts een specifieke subset van medische concepten zoals genen of ziekten. Het is zelfs nog zeldzamer om een ​​model te vinden dat de meeste medische concepten detecteert en koppelt aan een doelkennisbank. Gelukkig ben ik tegengekomen BERN[1], een neurale biomedische entiteitherkenning en multi-type normalisatietool. Als ik het goed begrijp, is het een verfijnd BioBert-model met verschillende modellen voor het koppelen van benoemde entiteiten die zijn geïntegreerd voor het in kaart brengen van concepten aan biomedische doelkennisbanken. Niet alleen dat, maar ze bieden ook een gratis REST-eindpunt, zodat we niet te maken hebben met de hoofdpijn om de afhankelijkheden en het model te laten werken. De biomedische benoemde entiteitsherkenningsvisualisatie die ik hierboven heb gebruikt, is gemaakt met behulp van het BERN-model, dus we weten dat het genen, ziekten, medicijnen, soorten, mutaties en paden in de tekst detecteert.

Helaas wijst het BERN-model niet aan alle concepten doelkennisbank-ID's toe. Dus ik heb een script opgesteld dat eerst kijkt of er een aparte id wordt gegeven voor een concept, en als dat niet het geval is, wordt de entiteitsnaam als id gebruikt. We zullen ook de sha256 van de tekst van zinnen berekenen om specifieke zinnen later gemakkelijker te identificeren wanneer we relatieextractie gaan uitvoeren.

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()})

Ik heb de resultaten van het koppelen van de genoemde entiteit gecontroleerd en zoals verwacht is het niet perfect. Het identificeert bijvoorbeeld stamcellen niet als een medisch concept. Aan de andere kant ontdekte het een enkele entiteit genaamd "hart, hersenen, zenuwen en nieren". BERN is echter nog steeds het beste open-source biomedische model dat ik tijdens mijn onderzoek kon vinden.

Een kennisgrafiek maken

Voordat we kijken naar technieken voor relatie-extractie, zullen we een biomedische kennisgrafiek maken met alleen entiteiten en de mogelijke toepassingen onderzoeken. Zoals gezegd heb ik een Google Colab-notebook die u kunt gebruiken om de codevoorbeelden in dit bericht te volgen. Om onze grafiek op te slaan, gebruiken we Neo4j. U hoeft zich niet bezig te houden met het voorbereiden van een lokale Neo4j-omgeving. In plaats daarvan kunt u een gratis Neo4j Sandbox-instantie gebruiken.

Neo4j-zandbak

Start de Leeg project in de zandbak en kopieer de verbindingsdetails naar de Colab-notebook.

Neo4j Sandbox-verbindingsdetails. Afbeelding door de auteur.

Nu kunt u doorgaan en de Neo4j-verbinding in de notebook voorbereiden.

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())

We beginnen met het importeren van de auteur en het artikel in de grafiek. Het artikelknooppunt bevat alleen de 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})

Als u de Neo4j Browser opent, zou u de volgende grafiek moeten zien.

Afbeelding door de auteur.

U kunt de zinnen en genoemde entiteiten importeren door de volgende Cypher-query uit te voeren:

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})

U kunt de volgende Cypher-query uitvoeren om de geconstrueerde grafiek te inspecteren:

MATCH p=(a:Article)-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity)
RETURN p LIMIT 25

Als u de gegevens correct hebt geïmporteerd, zou u een vergelijkbare visualisatie moeten zien.

Entiteitsextractie opgeslagen als een grafiek. Afbeelding door de auteur.

Kennisgrafiek toepassingen

Zelfs zonder de relatie-extractiestroom zijn er al een aantal use-cases voor onze grafiek.

Zoekmachine

We zouden onze grafiek als zoekmachine kunnen gebruiken. U kunt bijvoorbeeld de volgende Cypher-query gebruiken om zinnen of artikelen te vinden waarin een specifieke medische entiteit wordt genoemd.

MATCH (e:Entity)<-[:MENTIONS]-(s:Sentence)
WHERE e.name = "autoimmune diseases"
RETURN s.text as result

Resultaten

Afbeelding door de auteur.

Analyse van gelijktijdige gebeurtenissen

De tweede optie is de co-occurrence analyse. U kunt samen voorkomen tussen medische entiteiten definiëren als ze in dezelfde zin of hetzelfde artikel voorkomen. Ik heb een artikel [2] gevonden dat het medische gelijktijdige voorkomen gebruikt om nieuwe mogelijke verbanden tussen medische entiteiten te voorspellen.

Linkvoorspelling in een MeSH co-occurrence netwerk: voorlopige resultaten – PubMed

U kunt de volgende Cypher-query gebruiken om entiteiten te vinden die vaak in dezelfde zin voorkomen.

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

Resultaten

entiteit1 entiteit2 gelijktijdig voorkomen
huidziektes diabetische zweren 2
chronische wonden diabetische zweren 2
huidziektes chronische wonden 2

Het is duidelijk dat de resultaten beter zouden zijn als we duizenden of meer artikelen zouden analyseren.

Auteursexpertise inspecteren

U kunt deze grafiek ook gebruiken om de expertise van de auteur te vinden door de medische entiteiten te onderzoeken waarover ze het vaakst schrijven. Met deze informatie zou je ook toekomstige samenwerkingen kunnen voorstellen.

Voer de volgende Cypher-query uit om te zien welke medische entiteiten onze enige auteur in de onderzoekspaper heeft genoemd.

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

Resultaten

auteur entiteit tellen
Mohammedreza Ahmadi collageen 9
Mohammedreza Ahmadi brandwonden 4
Mohammedreza Ahmadi huidziektes 4
Mohammedreza Ahmadi collagenase enzymen 2
Mohammedreza Ahmadi Epidermolyse bullosa 2

Relatie extractie

Nu zullen we proberen relaties tussen medische concepten te extraheren. Vanuit mijn ervaring is de extractie van relaties op zijn minst een orde van grootte moeilijker dan extractie van de genoemde entiteit. Als u geen perfecte resultaten mag verwachten met het koppelen van benoemde entiteiten, dan kunt u zeker enkele fouten verwachten met de techniek voor het extraheren van relaties.

Ik heb gezocht naar beschikbare extractiemodellen voor biomedische relaties, maar ik heb niets gevonden dat direct werkt of niet hoeft te worden verfijnd. Het lijkt erop dat het gebied van relatie-extractie op het scherpst van de snede is, en hopelijk zullen we er in de toekomst meer aandacht voor krijgen. Helaas ben ik geen NLP-expert, dus ik vermeed mijn eigen model te verfijnen. In plaats daarvan zullen we de zero-shot-relatie-extractor gebruiken op basis van het papier Het verkennen van de zero-shot limiet van FewRel[3]. Hoewel ik het niet zou aanraden om dit model in productie te nemen, is het goed genoeg voor een eenvoudige demonstratie. Het model is beschikbaar op: KnuffelenGezicht, zodat we niet te maken hebben met training of het opzetten van het model.

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)

Met de zero-shot relatie-extractor kunt u definiëren welke relaties u wilt detecteren. In dit voorbeeld heb ik de . gebruikt geassocieerd en wisselwerking verhoudingen. Ik heb ook meer specifieke relatietypes geprobeerd, zoals traktaties, oorzaken en andere, maar de resultaten waren niet geweldig.

Met dit model moet u definiëren tussen welke paren van entiteiten u relaties wilt detecteren. We zullen de resultaten van de koppeling van de genoemde entiteit gebruiken als invoer voor het proces voor het extraheren van relaties. Eerst vinden we alle zinnen waarin twee of meer entiteiten worden genoemd en doorlopen ze vervolgens het relatie-extractiemodel om eventuele verbindingen te extraheren. Ik heb ook een drempelwaarde van 0.85 gedefinieerd, wat betekent dat als een model een verband voorspelt tussen entiteiten met een waarschijnlijkheid lager dan 0.85, we de voorspelling negeren.

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']) &gt; 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] &gt; 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]-&gt;(r:Relation {type: row.type})-[:REL]-&gt;(target)
MERGE (text)-[:MENTIONS]-&gt;(r)
""", {'data': predicted_rels})

We slaan de relaties op, evenals de brontekst die is gebruikt om die relatie te extraheren in de grafiek.

Geëxtraheerde relaties opgeslagen in een grafiek. Afbeelding door de auteur.

U kunt de geëxtraheerde relaties tussen entiteiten en de brontekst onderzoeken met de volgende Cypher-query:

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

Resultaten

Afbeelding door de auteur.

Zoals gezegd is het NLP-model dat ik heb gebruikt om relaties te extraheren niet perfect, en aangezien ik geen arts ben, weet ik niet hoeveel connecties het heeft gemist. Degenen die het heeft gedetecteerd, lijken echter redelijk.

Externe databaseverrijking

Zoals ik al eerder zei, kunnen we nog steeds de externe databases zoals CHEBI of MESH gebruiken om onze grafiek te verrijken. Onze grafiek bevat bijvoorbeeld een medische entiteit Epidermolyse bullosa en we kennen ook zijn MeSH-ID.

U kunt de MeSH-id van Epidermolysis bullosa ophalen met de volgende query:

MATCH (e:Entity)
WHERE e.name = "Epidermolysis bullosa"
RETURN e.name as entity, e.other_ids as other_ids

U kunt doorgaan en de MeSH inspecteren om beschikbare informatie te vinden:

MeSH-gekoppelde gegevens

Screenshot door auteur. De gegevens zijn afkomstig van de Amerikaanse National Library of Medicine.

Hier is een screenshot van de beschikbare informatie op de MeSH-website voor Epidermolysis bullosa. Zoals gezegd ben ik geen arts, dus ik weet niet precies hoe ik deze informatie het beste in een grafiek kan modelleren. Ik zal u echter laten zien hoe u deze informatie in Neo4j kunt ophalen met behulp van de apoc.load.json-procedure om de informatie van het MeSH REST-eindpunt op te halen. En dan kunt u een domeinexpert vragen om u te helpen bij het modelleren van deze informatie.

De Cypher-query om de informatie van het MeSH REST-eindpunt op te halen is:

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

Kennisgrafiek als invoer van machine learning-gegevens

Als laatste gedachte zal ik je snel uitleggen hoe je de biomedische kennisgrafiek kunt gebruiken als input voor een machine learning-workflow. De afgelopen jaren is er veel onderzoek en vooruitgang geweest op het gebied van node-inbedding. Modellen voor het inbedden van knooppunten vertalen de netwerktopologie naar inbeddingsruimte.

Copyright © 2017 Manan Shah, SNAP-groep. Afbeelding beschikbaar onder MIT-licentie in https://github.com/snap-stanford/cs224w-notes.

Stel dat je een biomedische kennisgrafiek hebt gemaakt met medische entiteiten en concepten, hun relaties en verrijking uit verschillende medische databases. U kunt technieken voor het insluiten van knooppunten gebruiken om de knooppuntrepresentaties te leren, die vectoren met een vaste lengte zijn, en deze in uw machine learning-workflow in te voeren. Verschillende toepassingen maken gebruik van deze benadering, variërend van herbestemming van geneesmiddelen tot voorspellingen van bijwerkingen of bijwerkingen. Ik heb een onderzoekspaper gevonden dat gebruik maakt van link voorspelling voor mogelijke behandelingen van nieuwe ziekten[4].

Conclusie

Het biomedische domein is een goed voorbeeld waar kennisgrafieken van toepassing zijn. Er zijn veel toepassingen, variërend van eenvoudige zoekmachines tot meer gecompliceerde machine learning-workflows. Hopelijk ben je door het lezen van deze blogpost op ideeën gekomen over hoe je biomedische kennisgrafieken kunt gebruiken om je toepassingen te ondersteunen. Je kunt beginnen met een gratis Neo4j Sandbox en begin vandaag nog met ontdekken.

Zoals altijd is de code beschikbaar op GitHub.

Referenties

[1] D.Kim c.s.., "A Neural Named Entity Recognition and Multi-Type Normalization Tool for Biomedical Text Mining," in IEEE-toegang, vol. 7, blz. 73729-73740, 2019, doi: 10.1109/ACCESS.2019.2920708.

[2] Kastrin A, Rindflesch TC, Hristovski D. Linkvoorspelling in een MeSH-netwerk voor gelijktijdig voorkomen: voorlopige resultaten. Stud Health Technol. 2014;205:579-83. PMID: 25160252.

[3] Cetoli, A. (2020). Het verkennen van de zero-shot-limiet van FewRel. In Proceedings van de 28e internationale conferentie over computerlinguïstiek (blz. 1447-1451). Internationale Commissie voor computerlinguïstiek.

[4] Zhang, R., Hristovski, D., Schutte, D., Kastrin, A., Fiszman, M., & Kilicoglu, H. (2021). Herbestemming van geneesmiddelen voor COVID-19 via voltooiing van kennisgrafiek. Tijdschrift voor biomedische informatica, 115, 103696.

Dit artikel is oorspronkelijk gepubliceerd op Op weg naar data science en opnieuw gepubliceerd naar TOPBOTS met toestemming van de auteur.

Geniet van dit artikel? Meld u aan voor meer AI-updates.

We laten het je weten wanneer we meer technisch onderwijs vrijgeven.

De post Maak een biomedische kenniskaart met NLP verscheen eerst op TOPBOTS.

Tijdstempel:

Meer van TOPBOTS