Zbuduj wykres wiedzy biomedycznej za pomocą NLP

Węzeł źródłowy: 1401511

Pokazałem już, jak utwórz wykres wiedzy ze strony Wikipedii. Jednak ponieważ post wzbudził duże zainteresowanie, postanowiłem zbadać inne dziedziny, w których użycie technik NLP do skonstruowania grafu wiedzy ma sens. Moim zdaniem dziedzina biomedyczna jest doskonałym przykładem, w którym przedstawianie danych w postaci wykresu ma sens, ponieważ często analizuje się interakcje i relacje między genami, chorobami, lekami, białkami i nie tylko.

Przykładowy podgraf, który pokazuje związki kwasu askorbinowego z innymi koncepcjami biomedycznymi. Obraz autorstwa autora.

W powyższej wizualizacji mamy do czynienia z kwasem askorbinowym, zwanym również witaminą C i niektórymi jego powiązaniami z innymi pojęciami. Na przykład pokazuje, że witamina C może być stosowana w leczeniu przewlekłego zapalenia żołądka.

Teraz możesz mieć zespół ekspertów dziedzinowych, który zmapuje dla Ciebie wszystkie te powiązania między lekami, chorobami i innymi koncepcjami biomedycznymi. Niestety, niewielu z nas może sobie pozwolić na zatrudnienie zespołu lekarzy, którzy wykonaliby za nas pracę. W takim przypadku możemy skorzystać z technik NLP, aby automatycznie wyodrębnić te relacje. Dobrą stroną jest to, że możemy użyć potoku NLP do odczytania wszystkich artykułów naukowych, a złą jest to, że nie wszystkie uzyskane wyniki będą doskonałe. Jednak biorąc pod uwagę, że nie mam przy sobie zespołu naukowców gotowych do ręcznego wyodrębniania relacji, ucieknę się do wykorzystania technik NLP do skonstruowania własnego wykresu wiedzy biomedycznej.

Użyję jednego artykułu badawczego w tym poście na blogu, aby przeprowadzić Cię przez wszystkie kroki wymagane do skonstruowania wykresu wiedzy biomedycznej – Inżynieria tkankowa regeneracji skóry i wzrostu włosów.

Artykuł został napisany przez Mohammadrezy Ahmadi. Artykuł w wersji PDF jest dostępny na licencji CC0 1.0. Przejdziemy przez następujące kroki, aby skonstruować wykres wiedzy:

  • Czytanie dokumentu PDF z OCR
  • Wstępne przetwarzanie tekstu
  • Rozpoznawanie i łączenie koncepcji biomedycznych
  • Ekstrakcja relacji
  • Wzbogacanie zewnętrznej bazy danych

Pod koniec tego postu utworzysz wykres z następującym schematem.

Schemat wykresu biomedycznego. Obraz autorstwa autora.

Do przechowywania naszego wykresu będziemy używać Neo4j, bazy danych wykresów, która zawiera model wykresów właściwości oznaczonych. Każdy artykuł może mieć jednego lub więcej autorów. Podzielimy treść artykułu na zdania i użyjemy NLP do wyodrębnienia zarówno podmiotów medycznych, jak i ich relacji. Może to być nieco sprzeczne z intuicją, że będziemy przechowywać relacje między podmiotami jako węzły pośrednie zamiast relacji. Krytycznym czynnikiem stojącym za tą decyzją jest to, że chcemy mieć ścieżkę audytu tekstu źródłowego, z którego została wyodrębniona relacja. W przypadku modelu wykresu właściwości z etykietą nie można mieć relacji wskazującej na inną relację. Z tego powodu refaktoryzujemy połączenie między koncepcjami medycznymi w węzeł pośredni. Pozwoli to również ekspertowi domeny ocenić, czy relacja została poprawnie wyodrębniona, czy nie.

Po drodze zademonstruję również zastosowania wykorzystania skonstruowanego grafu do wyszukiwania i analizy przechowywanych informacji.

Zanurzmy się w to!

Jeśli te szczegółowe treści edukacyjne są dla Ciebie przydatne, zapisz się na naszą listę dyskusyjną AI zostać powiadomionym, gdy wydamy nowy materiał.

Czytanie dokumentu PDF z OCR

Jak wspomniano, wersja PDF dokumentu badawczego jest dostępna publicznie na licencji CC0 1.0, co oznacza, że ​​możemy ją łatwo pobrać za pomocą Pythona. Będziemy używać piteserakt biblioteka do wyodrębniania tekstu z pliku PDF. O ile mi wiadomo, biblioteka pytesseract jest jedną z bardziej popularnych bibliotek do OCR. Jeśli chcesz śledzić wraz z przykładami kodu, przygotowałem Notatnik Google Colab, więc nie musisz samodzielnie kopiować i wklejać kodu.

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)

Wstępne przetwarzanie tekstu

Teraz, gdy mamy już dostęp do treści artykułu, usuniemy z tekstu tytuły sekcji i opisy rysunków. Następnie podzielimy tekst na zdania.

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)

Biomedyczne łączenie nazwanych jednostek

Teraz nadchodzi ekscytująca część. Dla nowych użytkowników NLP oraz rozpoznawania i łączenia nazwanych jednostek zacznijmy od podstaw. Techniki rozpoznawania nazwanych jednostek są używane do wykrywania odpowiednich jednostek lub pojęć w tekście. Na przykład w dziedzinie biomedycznej chcemy zidentyfikować w tekście różne geny, leki, choroby i inne pojęcia.

Ekstrakcja pojęć biomedycznych. Obraz autorstwa autora.

W tym przykładzie model NLP zidentyfikował w tekście geny, choroby, leki, gatunki, mutacje i ścieżki. Jak wspomniano, proces ten nazywa się rozpoznawaniem nazwanych jednostek. Uaktualnienie do rozpoznawania nazwanych jednostek to tak zwane łączenie nazwanych jednostek. Technika łączenia nazwanych jednostek wykrywa odpowiednie pojęcia w tekście i próbuje zmapować je do docelowej bazy wiedzy. W dziedzinie biomedycznej niektóre z docelowych baz wiedzy to:

Dlaczego mielibyśmy chcieć łączyć podmioty medyczne z docelową bazą wiedzy? Głównym powodem jest to, że pomaga nam radzić sobie z ujednoznacznieniem jednostek. Na przykład nie chcemy oddzielnych jednostek na wykresie przedstawiających kwas askorbinowy i witaminę C, ponieważ eksperci dziedzinowi mogą powiedzieć, że to to samo. Drugim powodem jest to, że mapując koncepcje do docelowej bazy wiedzy, możemy wzbogacić nasz model wykresu, pobierając informacje o mapowanych konceptach z docelowej bazy wiedzy. Jeśli ponownie użyjemy przykładu kwasu askorbinowego, możemy łatwo pobrać dodatkowe informacje z bazy danych CHEBI, jeśli znamy już jego Identyfikator CHEBI.

Dane dotyczące wzbogacania o kwas askorbinowy dostępne na stronie internetowej CHEBI. Wszystkie treści na stronie są dostępne pod Licencja CC BY 4.0. Obraz autorstwa autora.

Od jakiegoś czasu szukam przyzwoitego, przeszkolonego, wyszkolonego biomedycznego podmiotu o nazwie open source. Wiele modeli NLP koncentruje się na wyodrębnianiu tylko określonego podzbioru pojęć medycznych, takich jak geny lub choroby. Jeszcze rzadziej można znaleźć model, który wykrywa większość koncepcji medycznych i łączy je z docelową bazą wiedzy. Na szczęście się natknąłem BERNO[1], neuronowe rozpoznawanie jednostek biomedycznych i wielotypowe narzędzie normalizacji. Jeśli dobrze rozumiem, jest to dopracowany model BioBert z różnymi nazwanymi modelami łączącymi jednostki zintegrowanymi w celu mapowania koncepcji do biomedycznych baz wiedzy docelowej. Nie tylko to, ale zapewniają również bezpłatny punkt końcowy REST, więc nie musimy radzić sobie z bólem głowy związanym z działaniem zależności i modelu. Biomedyczna wizualizacja rozpoznawania nazwanych jednostek, której użyłem powyżej, została stworzona przy użyciu modelu BERN, więc wiemy, że wykrywa geny, choroby, leki, gatunki, mutacje i ścieżki w tekście.

Niestety model BERN nie przypisuje identyfikatorów docelowej bazy wiedzy do wszystkich koncepcji. Przygotowałem więc skrypt, który najpierw sprawdza, czy dla pojęcia podano odrębny identyfikator, a jeśli tak nie jest, użyje nazwy encji jako identyfikatora. Obliczymy również sha256 tekstu zdań, aby później łatwiej zidentyfikować określone zdania, gdy będziemy robić wyodrębnianie relacji.

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

Sprawdziłem wyniki łączenia nazwanej jednostki i zgodnie z oczekiwaniami nie jest to idealne. Na przykład nie identyfikuje komórek macierzystych jako koncepcji medycznej. Z drugiej strony wykrył pojedynczą jednostkę o nazwie „serce, mózg, nerwy i nerki”. Jednak BERN jest nadal najlepszym modelem biomedycznym o otwartym kodzie źródłowym, jaki udało mi się znaleźć podczas mojego dochodzenia.

Skonstruuj wykres wiedzy

Zanim przyjrzymy się technikom ekstrakcji relacji, skonstruujemy graf wiedzy biomedycznej przy użyciu wyłącznie jednostek i zbadamy możliwe zastosowania. Jak wspomniano, przygotowałem Notatnik Google Colab którego możesz użyć do śledzenia przykładów kodu w tym poście. Do przechowywania naszego wykresu użyjemy Neo4j. Nie musisz zajmować się przygotowywaniem lokalnego środowiska Neo4j. Zamiast tego możesz użyć bezpłatnej instancji Neo4j Sandbox.

Piaskownica Neo4j

Zacząć Pusty projekt w piaskownicy i skopiuj szczegóły połączenia do notatnika Colab.

Szczegóły połączenia Neo4j Sandbox. Obraz autorstwa autora.

Teraz możesz śmiało przygotować połączenie Neo4j w notebooku.

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

Zaczniemy od zaimportowania autora i artykułu do wykresu. Węzeł artykułu będzie zawierał tylko tytuł.

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

Jeśli otworzysz przeglądarkę Neo4j, powinieneś zobaczyć następujący wykres.

Obraz autorstwa autora.

Możesz zaimportować zdania i wspomniane encje, wykonując następujące zapytanie Cypher:

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

Możesz wykonać następujące zapytanie Cypher, aby sprawdzić skonstruowany wykres:

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

Jeśli poprawnie zaimportowałeś dane, powinieneś zobaczyć podobną wizualizację.

Ekstrakcja jednostek przechowywana w postaci wykresu. Obraz autorstwa autora.

Aplikacje wykresów wiedzy

Nawet bez przepływu ekstrakcji relacji istnieje już kilka przypadków użycia naszego wykresu.

Wyszukiwarka

Moglibyśmy użyć naszego wykresu jako wyszukiwarki. Na przykład możesz użyć następującego zapytania szyfrującego, aby znaleźć zdania lub artykuły, które wspominają o określonej jednostce medycznej.

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

Efekt

Obraz autorstwa autora.

Analiza współwystępowania

Drugą opcją jest analiza współwystępowania. Możesz zdefiniować współwystępowanie między podmiotami medycznymi, jeśli występują w tym samym zdaniu lub artykule. Znalazłem artykuł [2], który wykorzystuje medyczną sieć współwystępowania do przewidywania nowych możliwych powiązań między podmiotami medycznymi.

Przewidywanie linków w sieci współwystępowania MeSH: wstępne wyniki – PubMed

Możesz użyć następującego zapytania szyfrującego, aby znaleźć jednostki, które często występują w tym samym zdaniu.

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

Efekt

podmiot1 podmiot2 współwystępowanie
choroby skóry wrzody cukrzycowe 2
przewlekłe rany wrzody cukrzycowe 2
choroby skóry przewlekłe rany 2

Oczywiście wyniki byłyby lepsze, gdybyśmy przeanalizowali tysiące lub więcej artykułów.

Sprawdź wiedzę autora

Możesz również użyć tego wykresu, aby znaleźć ekspertyzę autora, badając podmioty medyczne, o których najczęściej piszą. Dzięki tym informacjom możesz również zasugerować przyszłą współpracę.

Wykonaj następujące zapytanie Cypher, aby sprawdzić, które podmioty medyczne wymienił nasz jedyny autor w artykule badawczym.

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

Efekt

autor jednostka liczyć
Mohammadrezy Ahmadi Kolagen 9
Mohammadrezy Ahmadi oparzenia 4
Mohammadrezy Ahmadi choroby skóry 4
Mohammadrezy Ahmadi enzymy kolagenazy 2
Mohammadrezy Ahmadi Pęcherzowe oddzielanie się naskórka 2

Ekstrakcja relacji

Teraz spróbujemy wydobyć relacje między koncepcjami medycznymi. Z mojego doświadczenia wynika, że ​​wyodrębnianie relacji jest co najmniej o rząd wielkości trudniejsze niż wyodrębnianie nazwanych encji. Jeśli nie powinieneś oczekiwać doskonałych wyników z łączeniem nazwanych encji, z pewnością możesz spodziewać się błędów w technice wyodrębniania relacji.

Szukałem dostępnych modeli ekstrakcji relacji biomedycznych, ale nie znalazłem niczego, co działa po wyjęciu z pudełka lub nie wymaga dostrajania. Wydaje się, że dziedzina wyodrębniania relacji jest w czołówce i miejmy nadzieję, że w przyszłości przyjrzymy się temu więcej. Niestety nie jestem ekspertem NLP, więc unikałem dostrajania własnego modelu. Zamiast tego użyjemy ekstraktora relacji zero-shot opartego na papierze Odkrywanie limitu zerowego strzału w FewRel[3]. Chociaż nie polecałbym wprowadzania tego modelu do produkcji, jest on wystarczająco dobry do prostej demonstracji. Model dostępny na Przytulanie twarzy, dzięki czemu nie musimy zajmować się szkoleniem ani konfiguracją modelu.

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)

Dzięki ekstraktorowi relacji zero-shot możesz określić, które relacje chcesz wykryć. W tym przykładzie użyłem powiązany i współdziała relacje. Próbowałem również bardziej konkretnych typów relacji, takich jak smakołyki, przyczyny i inne, ale wyniki nie były wspaniałe.

W tym modelu musisz zdefiniować, pomiędzy którymi parami encji chcesz wykrywać relacje. Użyjemy wyników linkowania nazwanej encji jako danych wejściowych do procesu wyodrębniania relacji. Najpierw znajdujemy wszystkie zdania, w których wymieniono dwa lub więcej podmiotów, a następnie przeprowadzamy je przez model wyodrębniania relacji, aby wyodrębnić wszelkie powiązania. Zdefiniowałem również wartość progową 0.85, co oznacza, że ​​jeśli model przewiduje powiązanie między podmiotami z prawdopodobieństwem niższym niż 0.85, zignorujemy tę prognozę.

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

Przechowujemy relacje, a także tekst źródłowy użyty do wyodrębnienia tej relacji na wykresie.

Wyodrębnione relacje przechowywane w grafie. Obraz autorstwa autora.

Wyodrębnione relacje między jednostkami a tekstem źródłowym można zbadać za pomocą następującego zapytania szyfrującego:

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

Efekt

Obraz autorstwa autora.

Jak wspomniałem, model NLP, którego użyłem do wyodrębniania relacji, nie jest doskonały, a ponieważ nie jestem lekarzem, nie wiem, ile połączeń pominął. Jednak te, które wykrył, wydają się rozsądne.

Wzbogacanie zewnętrznej bazy danych

Jak wspomniałem wcześniej, nadal możemy korzystać z zewnętrznych baz danych, takich jak CHEBI czy MESH, aby wzbogacić nasz wykres. Na przykład nasz wykres zawiera podmiot medyczny Pęcherzowe oddzielanie się naskórka znamy również jego identyfikator MeSH.

Możesz pobrać identyfikator MeSH pęcherza moczowego naskórka za pomocą następującego zapytania:

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

Możesz iść dalej i sprawdzić MeSH, aby znaleźć dostępne informacje:

Dane połączone z MeSH

Zrzut ekranu autora. Dane są udostępnione dzięki uprzejmości Narodowej Biblioteki Medycznej Stanów Zjednoczonych.

Oto zrzut ekranu z informacjami dostępnymi na stronie MeSH dla Epidermolysis bullosa. Jak wspomniano, nie jestem lekarzem, więc nie wiem dokładnie, jaki byłby najlepszy sposób modelowania tych informacji na wykresie. Jednak pokażę ci, jak pobrać te informacje w Neo4j za pomocą procedury apoc.load.json, aby pobrać informacje z punktu końcowego MeSH REST. Następnie możesz poprosić eksperta domeny o pomoc w modelowaniu tych informacji.

Zapytanie Cypher do pobrania informacji z punktu końcowego MeSH REST to:

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

Wykres wiedzy jako dane wejściowe uczenia maszynowego

Na koniec szybko przeprowadzę Cię przez proces wykorzystania wykresu wiedzy biomedycznej jako danych wejściowych do przepływu pracy uczenia maszynowego. W ostatnich latach przeprowadzono wiele badań i postępów w dziedzinie osadzania węzłów. Modele osadzania węzłów przekładają topologię sieci na przestrzeń osadzania.

Prawa autorskie © 2017 Manan Shah, Grupa SNAP. Obraz dostępny na licencji MIT w https://github.com/snap-stanford/cs224w-notes.

Załóżmy, że skonstruowałeś graf wiedzy biomedycznej zawierający jednostki i koncepcje medyczne, ich relacje i wzbogacenie z różnych medycznych baz danych. Możesz użyć technik osadzania węzłów, aby poznać reprezentacje węzłów, które są wektorami o stałej długości, i wprowadzić je do przepływu pracy uczenia maszynowego. Podejście to wykorzystuje się w różnych zastosowaniach, od zmiany przeznaczenia leku po przewidywanie skutków ubocznych lub skutków ubocznych. Znalazłem artykuł badawczy, który używa prognoza linków dla potencjalnych metod leczenia nowych chorób[4].

Wnioski

Dziedzina biomedyczna jest doskonałym przykładem zastosowania wykresów wiedzy. Istnieje wiele aplikacji, od prostych wyszukiwarek po bardziej skomplikowane przepływy pracy związane z uczeniem maszynowym. Mamy nadzieję, że czytając ten wpis na blogu, wpadłeś na kilka pomysłów, jak wykorzystać wykresy wiedzy biomedycznej do wsparcia swoich aplikacji. Możesz zacząć darmowa piaskownica Neo4j i zacznij odkrywać już dziś.

Jak zawsze kod jest dostępny na GitHub.

Referencje

[1] D. Kim i wsp., „Neural Named Entity Recognition and Multi-Type Normalization Tool for Biomedical Text Mining”, w: Dostęp IEEE, tom. 7, s. 73729–73740, 2019, doi: 10.1109/ACCESS.2019.2920708.

[2] Kastrin A, Rindflesch TC, Hristovski D. Przewidywanie linków w sieci współwystępowania MeSH: wyniki wstępne. Informacje o technologii zdrowia stadnin. 2014;205:579–83. PMID: 25160252.

[3] Cetoli, A. (2020). Odkrywanie limitu zerowego strzału w FewRel. W Materiały XXVIII Międzynarodowej Konferencji Lingwistyki Komputerowej (s. 1447-1451). Międzynarodowy Komitet Lingwistyki Komputerowej.

[4] Zhang R., Hristovski D., Schutte D., Kastrin A., Fiszman M. i Kilicoglu H. (2021). Ponowne przeznaczenie leków na COVID-19 poprzez uzupełnienie wykresu wiedzy. Journal of Biomedical Informatics, 115, 103696.

Ten artykuł został pierwotnie opublikowany w W kierunku nauki o danych i ponownie opublikowane w TOPBOTS za zgodą autora.

Podoba Ci się ten artykuł? Zarejestruj się, aby otrzymywać więcej aktualizacji AI.

Damy Ci znać, kiedy wydamy więcej edukacji technicznej.

Post Zbuduj wykres wiedzy biomedycznej za pomocą NLP pojawiła się najpierw na TOPBOTY.

Znak czasu:

Więcej z TOPBOTY