Luo biolääketieteen tietokaavio NLP:n avulla

Lähdesolmu: 1401511

Olen jo osoittanut, miten Luo tietokaavio Wikipedia-sivulta. Koska viesti sai kuitenkin paljon huomiota, olen päättänyt tutkia muita alueita, joilla on järkevää käyttää NLP-tekniikoita tietograafin rakentamiseen. Mielestäni biolääketieteen ala on erinomainen esimerkki siitä, missä tietojen esittäminen kaaviona on järkevää, koska analysoit usein vuorovaikutuksia ja suhteita geenien, sairauksien, lääkkeiden, proteiinien ja muiden välillä.

Esimerkki alikaaviosta, joka näyttää askorbiinihapon suhteet muihin biolääketieteen käsitteisiin. Kuva tekijältä.

Yllä olevassa visualisoinnissa meillä on askorbiinihappo, joka tunnetaan myös nimellä C-vitamiini, ja jotkin sen suhteet muihin käsitteisiin. Se osoittaa esimerkiksi, että C-vitamiinia voitaisiin käyttää kroonisen gastriitin hoitoon.

Nyt voit saada verkkoalueen asiantuntijoiden tiimin kartoittamaan sinulle kaikki nämä yhteydet lääkkeiden, sairauksien ja muiden biolääketieteen käsitteiden välillä. Mutta valitettavasti monilla meistä ei ole varaa palkata lääkäreitä tekemään työn puolestamme. Siinä tapauksessa voimme turvautua käyttämään NLP-tekniikoita purkaaksesi nämä suhteet automaattisesti. Hyvä puoli on, että voimme käyttää NLP-putkia lukeaksemme kaikki siellä olevat tutkimuspaperit, ja huono puoli on, että kaikki saadut tulokset eivät ole täydellisiä. Koska minulla ei kuitenkaan ole rinnallani tutkijaryhmää, joka olisi valmis poimimaan suhteita manuaalisesti, turvaudun käyttämään NLP-tekniikoita oman biolääketieteen tietokaavion rakentamiseen.

Käytän tässä blogiviestissä yhtä tutkimuspaperia opastaakseni sinut läpi kaikki vaiheet, joita tarvitaan biolääketieteellisen tietämyksen kaavion laatimiseen - Ihon uudistumisen ja hiusten kasvun kudostekniikka.

Lehden on kirjoittanut Mohammadreza Ahmadi. Artikkelin PDF-versio on saatavilla CC0 1.0 -lisenssillä. Teemme seuraavat vaiheet tietokaavion rakentamiseksi:

  • PDF-dokumentin lukeminen OCR:llä
  • Tekstin esikäsittely
  • Biolääketieteen käsitteiden tunnistaminen ja yhdistäminen
  • Suhteen purkaminen
  • Ulkoinen tietokannan rikastus

Tämän viestin loppuun mennessä rakennat kaavion seuraavalla skeemalla.

Biolääketieteen kaaviokaavio. Kuva tekijältä.

Käytämme kuvaajamme tallentamiseen Neo4j:tä, graafitietokantaa, jossa on merkitty ominaisuuskaaviomalli. Jokaisella artikkelilla voi olla yksi tai useampi kirjoittaja. Jaamme artikkelin sisällön lauseisiin ja käytämme NLP:tä poimimaan sekä lääketieteellisiä kokonaisuuksia että niiden suhteita. Saattaa olla hieman vastoin intuitiivista, että tallennamme entiteettien väliset suhteet välisolmuiksi suhteiden sijaan. Kriittinen tekijä tämän päätöksen takana on, että haluamme saada kirjausketjun lähdetekstistä, josta relaatio on poimittu. Tunnistetulla ominaisuuskaaviomallilla sinulla ei voi olla suhdetta, joka osoittaa toiseen suhteeseen. Tästä syystä refaktoroimme lääketieteellisten käsitteiden välisen yhteyden välisolmuksi. Tämä antaa myös verkkotunnuksen asiantuntijalle mahdollisuuden arvioida, onko relaatio purettu oikein vai ei.

Matkan varrella esittelen myös sovelluksia rakennetun graafin käyttämiseksi tallennetun tiedon etsimiseen ja analysointiin.

Sukelletaan suoraan siihen!

Jos tästä perusteellisesta opetussisällöstä on hyötyä sinulle, tilaa AI-tutkimuksen postituslista hälytys, kun julkaisemme uutta materiaalia.

PDF-dokumentin lukeminen OCR:llä

Kuten mainittiin, tutkimuspaperin PDF-versio on yleisön saatavilla CC0 1.0 -lisenssillä, mikä tarkoittaa, että voimme ladata sen helposti Pythonilla. Tulemme käyttämään pytesserakti kirjasto poimia tekstiä PDF-tiedostosta. Sikäli kuin tiedän, pytesseract-kirjasto on yksi suosituimmista OCR-kirjastoista. Jos haluat seurata koodiesimerkkejä, olen valmistellut a Google Colab -muistikirja, joten sinun ei tarvitse kopioida ja liittää koodia itse.

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)

Tekstin esikäsittely

Nyt kun artikkelin sisältö on saatavilla, jatkamme ja poistamme tekstistä osioiden otsikot ja kuvien kuvaukset. Seuraavaksi jaamme tekstin lauseisiin.

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)

Biolääketieteen nimeltä kokonaisuuden linkitys

Nyt tulee jännittävä osa. Aloitetaan perusasioista niille, jotka ovat uusia NLP:n ja nimettyjen entiteettien tunnistamisessa ja linkittämisessä. Nimettyjen entiteettien tunnistustekniikoita käytetään tunnistamaan tekstissä olevia kokonaisuuksia tai käsitteitä. Esimerkiksi biolääketieteen alalla haluamme tunnistaa tekstistä erilaisia ​​geenejä, lääkkeitä, sairauksia ja muita käsitteitä.

Biolääketieteen käsitteiden uuttaminen. Kuva tekijältä.

Tässä esimerkissä NLP-malli tunnisti tekstistä geenejä, sairauksia, lääkkeitä, lajeja, mutaatioita ja polkuja. Kuten mainittiin, tätä prosessia kutsutaan nimetyn entiteetin tunnistamiseksi. Päivitys nimettyjen entiteettien tunnistukseen on ns. nimetty entiteetti -linkitys. Nimetty entiteettilinkitystekniikka havaitsee tekstistä olennaiset käsitteet ja yrittää kartoittaa ne kohdetietokantaan. Biolääketieteen alalla jotkin kohdetietokannat ovat:

Miksi haluaisimme linkittää lääketieteelliset kokonaisuudet kohdetietokantaan? Ensisijainen syy on, että se auttaa meitä käsittelemään kokonaisuuden yksiselitteistämistä. Emme esimerkiksi halua erillisiä kokonaisuuksia kaavioon, joka edustaa askorbiinihappoa ja C-vitamiinia, koska toimialueen asiantuntijat voivat kertoa, että ne ovat sama asia. Toissijainen syy on se, että kartoittamalla käsitteitä kohdetietokantaan, voimme rikastaa graafimalliamme hakemalla tietoa kartoitetuista käsitteistä kohdetietokannasta. Jos käytämme askorbiinihappoesimerkkiä uudelleen, voisimme helposti hakea lisätietoja CHEBI-tietokannasta, jos tiedämme sen jo CHEBI-tunnus.

Rikastustiedot saatavilla askorbiinihaposta CHEBI:n verkkosivuilta. Kaikki sivuston sisältö löytyy kohdasta CC BY 4.0 -lisenssi. Kuva tekijältä.

Olen etsinyt kunnollista avoimen lähdekoodin esikoulutettua biolääketieteen nimettyä kokonaisuutta, joka linkittää jonkin aikaa. Monet NLP-mallit keskittyvät vain tiettyjen lääketieteellisten käsitteiden, kuten geenien tai sairauksien, poimimiseen. Vielä harvinaisempaa on löytää malli, joka tunnistaa useimmat lääketieteelliset käsitteet ja linkittää ne kohdetietokantaan. Onneksi törmäsin BERN[1], hermobiolääketieteen kokonaisuuden tunnistus- ja monityyppinen normalisointityökalu. Jos ymmärrän oikein, se on hienosäädetty BioBert-malli, jossa on useita nimettyjä kokonaisuuksia yhdistäviä malleja, jotka on integroitu kartoittamaan käsitteitä biolääketieteen kohdetietokantoihin. Ei vain, vaan ne tarjoavat myös ilmaisen REST-päätepisteen, joten meidän ei tarvitse käsitellä päänsärkyä, joka liittyy riippuvuuksien ja mallin toimimiseen. Yllä käyttämäni biolääketieteen nimeltä entiteettientunnistuksen visualisointi luotiin BERN-mallilla, joten tiedämme, että se havaitsee geenit, sairaudet, lääkkeet, lajit, mutaatiot ja polut tekstistä.

Valitettavasti BERN-malli ei määritä kohdetietokannan tunnuksia kaikille käsitteille. Joten olen valmistellut skriptin, joka ensin tarkistaa, onko konseptille annettu erillinen tunnus, ja jos ei ole, se käyttää entiteetin nimeä tunnuksena. Laskemme myös lausetekstin sha256:n tunnistaaksemme tietyt lauseet helpommin myöhemmin, kun teemme relaatioiden purkamista.

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

Olen tarkastanut nimetyn kokonaisuuden linkityksen tulokset, ja odotetusti se ei ole täydellinen. Se ei esimerkiksi tunnista kantasoluja lääketieteelliseksi käsitteeksi. Toisaalta se havaitsi yhden kokonaisuuden nimeltä "sydän, aivot, hermot ja munuaiset". BERN on kuitenkin edelleen paras avoimen lähdekoodin biolääketieteen malli, jonka löysin tutkimukseni aikana.

Rakenna tietograafi

Ennen kuin tarkastelemme relaatioiden poimintatekniikoita, rakennamme biolääketieteen tietograafin käyttämällä vain entiteettejä ja tutkimme mahdollisia sovelluksia. Kuten mainittiin, olen valmistellut a Google Colab -muistikirja jonka avulla voit seurata tämän viestin koodiesimerkkejä. Käytämme Neo4j:n tallentamiseen kuvaajamme. Sinun ei tarvitse valmistautua paikalliseen Neo4j-ympäristöön. Sen sijaan voit käyttää ilmaista Neo4j Sandbox -esiintymää.

Neo4j hiekkalaatikko

Aloita Tyhjä projekti hiekkalaatikossa ja kopioi yhteystiedot Colab-muistikirjaan.

Neo4j Sandbox -liitäntätiedot. Kuva tekijältä.

Nyt voit valmistella Neo4j-yhteyden muistikirjassa.

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

Aloitamme tuomalla kirjoittajan ja artikkelin kaavioon. Artikkelin solmu sisältää vain otsikon.

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

Jos avaat Neo4j-selaimen, sinun pitäisi nähdä seuraava kaavio.

Kuva tekijältä.

Voit tuoda lauseet ja mainitut entiteetit suorittamalla seuraavan Cypher-kyselyn:

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

Voit suorittaa seuraavan Cypher-kyselyn tarkastaaksesi muodostetun graafin:

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

Jos olet tuonut tiedot oikein, sinun pitäisi nähdä samanlainen visualisointi.

Entiteettipoiminta tallennettu kaaviona. Kuva tekijältä.

Tietokaaviosovellukset

Jopa ilman relaatiopoiminnan virtaa, graafillemme on jo pari käyttötapausta.

Hakukone

Voisimme käyttää kaavioamme hakukoneena. Voit esimerkiksi käyttää seuraavaa Cypher-kyselyä löytääksesi lauseita tai artikkeleita, joissa mainitaan tietty lääketieteellinen kokonaisuus.

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

tulokset

Kuva tekijältä.

Samanaikaisen esiintymisen analyysi

Toinen vaihtoehto on yhteisesiintymisen analyysi. Voit määritellä lääketieteellisten kokonaisuuksien yhteisesiintymisen, jos ne esiintyvät samassa lauseessa tai artikkelissa. Löysin artikkelin[2], joka käyttää lääketieteellisen yhteisesiintymisen verkkoa ennustamaan uusia mahdollisia yhteyksiä lääketieteellisten kokonaisuuksien välillä.

Linkin ennustus MeSH-yhteisesiintymisverkossa: alustavat tulokset – PubMed

Voit käyttää seuraavaa Cypher-kyselyä löytääksesi entiteettejä, jotka esiintyvät usein samassa lauseessa.

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

tulokset

entiteetti1 entiteetti2 samaan aikaan
ihosairaudet diabeettiset haavaumat 2
krooniset haavat diabeettiset haavaumat 2
ihosairaudet krooniset haavat 2

On selvää, että tulokset olisivat parempia, jos analysoisimme tuhansia tai useampia artikkeleita.

Tarkista tekijän asiantuntemus

Voit myös käyttää tätä kaaviota löytääksesi kirjoittajan asiantuntemuksen tutkimalla lääketieteellisiä kokonaisuuksia, joista he useimmiten kirjoittavat. Näiden tietojen avulla voit myös ehdottaa tulevaa yhteistyötä.

Suorita seuraava Cypher-kysely tarkistaaksesi, mitkä lääketieteelliset kokonaisuudet yksittäinen kirjoittajamme mainitsi tutkimuspaperissa.

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

tulokset

kirjoittaja kokonaisuus laskea
Mohammadreza Ahmadi kollageeni 9
Mohammadreza Ahmadi palovammat 4
Mohammadreza Ahmadi ihosairaudet 4
Mohammadreza Ahmadi kollagenaasientsyymit 2
Mohammadreza Ahmadi Epidermolysis bullosa 2

Suhteen purkaminen

Nyt yritämme purkaa suhteita lääketieteellisten käsitteiden välillä. Kokemukseni mukaan relaatioiden purkaminen on ainakin suuruusluokkaa vaikeampi kuin nimetty entiteetti. Jos sinun ei pitäisi odottaa täydellisiä tuloksia nimettyjen entiteettien linkityksellä, voit varmasti odottaa virheitä relaatioiden purkutekniikassa.

Olen etsinyt saatavilla olevia biolääketieteellisten suhteiden erotusmalleja, mutta en löytänyt mitään, mikä toimisi heti laatikosta tai ei vaadi hienosäätöä. Näyttää siltä, ​​​​että relaatioiden poimimisen kenttä on kärjessä, ja toivottavasti näemme siihen enemmän huomiota tulevaisuudessa. Valitettavasti en ole NLP-asiantuntija, joten vältin oman mallini hienosäätöä. Sen sijaan käytämme paperiin perustuvaa zero-shot-relaatiopoimintaa FewRelin nolla-rajan tutkiminen[3]. Vaikka en suosittele tämän mallin ottamista tuotantoon, se on tarpeeksi hyvä yksinkertaiseen esittelyyn. Malli on saatavilla osoitteessa HalaaKasvot, joten meidän ei tarvitse huolehtia koulutuksesta tai mallin luomisesta.

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)

Nollakuvan relaatioiden erottimella voit määrittää, mitkä suhteet haluat havaita. Tässä esimerkissä olen käyttänyt liittyvä ja vuorovaikutuksessa suhteita. Olen kokeillut myös tarkempia suhdetyyppejä, kuten hoitoja, syitä ja muita, mutta tulokset eivät olleet loistavia.

Tämän mallin avulla sinun on määritettävä, minkä entiteettiparien välillä haluat havaita suhteita. Käytämme nimetyn entiteetin linkityksen tuloksia syötteenä relaatioiden purkuprosessiin. Ensin etsitään kaikki lauseet, joissa mainitaan kaksi tai useampi entiteetti, ja suoritamme ne sitten relaatiopoimintamallin läpi mahdollisten yhteyksien poimimiseksi. Olen myös määritellyt kynnysarvon 0.85, mikä tarkoittaa, että jos malli ennustaa entiteettien välisen yhteyden alle 0.85:n todennäköisyydellä, jätämme ennusteen huomiotta.

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

Tallennamme suhteet sekä lähdetekstin, jota käytetään kyseisen suhteen poimimiseen kaavioon.

Poimitut relaatiot, jotka on tallennettu kuvaajaan. Kuva tekijältä.

Voit tarkastella entiteettien ja lähdetekstin välisiä purettuja suhteita seuraavalla Cypher-kyselyllä:

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

tulokset

Kuva tekijältä.

Kuten mainittiin, NLP-malli, jota olen käyttänyt suhteiden poimimiseen, ei ole täydellinen, ja koska en ole lääkäri, en tiedä kuinka monta yhteyttä se puuttui. Sen havaitsemat näyttävät kuitenkin järkeviltä.

Ulkoinen tietokannan rikastus

Kuten aiemmin mainitsin, voimme silti käyttää ulkoisia tietokantoja, kuten CHEBI tai MESH, rikastamaan kaavioamme. Esimerkiksi kaaviomme sisältää lääketieteellisen kokonaisuuden Epidermolysis bullosa ja tiedämme myös sen MeSH-tunnuksen.

Voit hakea Epidermolysis bullosan MeSH-tunnuksen seuraavalla kyselyllä:

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

Voit mennä eteenpäin ja tarkastaa MeSH löytääksesi saatavilla olevat tiedot:

MeSH linkitetyt tiedot

Kuvakaappaus kirjoittajalta. Tiedot ovat US National Library of Medicine -kirjaston luvalla.

Tässä on kuvakaappaus saatavilla olevista tiedoista MeSH-verkkosivustolla Epidermolysis bullosasta. Kuten mainittiin, en ole lääkäri, joten en tarkalleen tiedä, mikä olisi paras tapa mallintaa nämä tiedot kaaviona. Näytän kuitenkin, kuinka nämä tiedot noudetaan Neo4j:ssä käyttämällä apoc.load.json-menettelyä tietojen hakemiseksi MeSH REST -päätepisteestä. Sitten voit pyytää verkkotunnuksen asiantuntijaa auttamaan sinua mallintamaan nämä tiedot.

Cypher-kysely tietojen hakemiseksi MeSH REST -päätepisteestä on:

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

Tietokaavio koneoppimistietojen syötteenä

Viimeisenä ajatuksena opastan sinut nopeasti läpi, kuinka voit käyttää biolääketieteen tietokaaviota syötteenä koneoppimisen työnkulkuun. Viime vuosina solmujen upottamisen alalla on tehty paljon tutkimusta ja edistystä. Solmun upotusmallit kääntävät verkkotopologian upotustilaksi.

Copyright © 2017 Manan Shah, SNAP Group. Kuva saatavilla MIT-lisenssillä https://github.com/snap-stanford/cs224w-notes.

Oletetaan, että olet rakentanut biolääketieteen tietokaavion, joka sisältää lääketieteellisiä kokonaisuuksia ja käsitteitä, niiden suhteita ja rikastumista erilaisista lääketieteellisistä tietokannoista. Voit käyttää solmun upotustekniikoita oppiaksesi solmuesitykset, jotka ovat kiinteäpituisia vektoreita, ja syöttääksesi ne koneoppimisen työnkulkuusi. Useat sovellukset käyttävät tätä lähestymistapaa lääkkeiden uudelleenkäytöstä lääkkeen sivu- tai haittavaikutusten ennustamiseen. Löysin tutkimuspaperin, joka käyttää linkki ennustus uusien sairauksien mahdollisiin hoitoihin[4].

Yhteenveto

Biolääketieteen ala on erinomainen esimerkki, jossa tietokaavioita voidaan soveltaa. Sovelluksia on monia yksinkertaisista hakukoneista monimutkaisempiin koneoppimisen työnkulkuihin. Toivottavasti lukiessasi tämän blogikirjoituksen sait ideoita siitä, kuinka voit käyttää biolääketieteen tietokaavioita sovelluksiesi tukemiseen. Voit aloittaa a ilmainen Neo4j Sandbox ja aloita tutkiminen tänään.

Kuten aina, koodi on saatavilla GitHub.

Viitteet

[1] D. Kim et ai., "Neuraalinen nimetty entiteetin tunnistus- ja monityyppinen normalisointityökalu biolääketieteelliseen tekstinlouhintaan", julkaisussa IEEE-käyttöoikeus, voi. 7, s. 73729–73740, 2019, doi: 10.1109/ACCESS.2019.2920708.

[2] Kastrin A, Rindflesch TC, Hristovski D. Linkin ennuste MeSH-samanaikaverkossa: alustavat tulokset. Stud Health Technol Inform. 2014; 205:579–83. PMID: 25160252.

[3] Cetoli, A. (2020). FewRelin nolla-rajan tutkiminen. Sisään Proceedings of 28th International Conference on Computational Linguistics (s. 1447–1451). Kansainvälinen laskennallisen lingvistiikan komitea.

[4] Zhang, R., Hristovski, D., Schutte, D., Kastrin, A., Fiszman, M., & Kilicoglu, H. (2021). Huumeiden uudelleenkäyttö COVID-19:ää varten tietokaavion täydentämisen avulla. Journal of Biomedical Informatics, 115, 103696.

Tämä artikkeli julkaistiin alunperin Kohti datatieteitä ja julkaistu uudelleen TOPBOTS: lle tekijän luvalla.

Nauti tästä artikkelista? Tilaa lisää AI-päivityksiä.

Ilmoitamme sinulle, kun julkaisemme lisää teknistä koulutusta.

Viesti Luo biolääketieteen tietokaavio NLP:n avulla ilmestyi ensin TOPBOTIT.

Aikaleima:

Lisää aiheesta TOPBOTIT