NLP로 의생명 지식 그래프 구축

소스 노드 : 1401511

나는 이미 방법을 보여 주었다 Wikipedia 페이지에서 지식 그래프 만들기. 그러나 게시물이 많은 주목을 받았기 때문에 NLP 기술을 사용하여 지식 그래프를 구성하는 것이 의미가 있는 다른 영역을 탐색하기로 결정했습니다. 제 생각에 생물 의학 분야는 유전자, 질병, 약물, 단백질 등의 상호 작용과 관계를 종종 분석할 때 데이터를 그래프로 나타내는 것이 의미가 있는 대표적인 예입니다.

다른 생물 의학 개념에 대한 아스코르브산 관계를 보여주는 예제 하위 그래프. 저자의 이미지.

위의 시각화에서 우리는 비타민 C라고도 하는 아스코르브산과 다른 개념과의 일부 관계를 가지고 있습니다. 예를 들어, 비타민 C가 만성 위염 치료에 사용될 수 있음을 보여줍니다.

이제 도메인 전문가 팀이 약물, 질병 및 기타 생물 의학 개념 간의 모든 연결을 매핑하도록 할 수 있습니다. 그러나 불행히도 우리 중 많은 사람들이 우리를 위해 일할 의사 팀을 고용할 여력이 없습니다. 이 경우 NLP 기술을 사용하여 해당 관계를 자동으로 추출할 수 있습니다. 좋은 점은 NLP 파이프라인을 사용하여 모든 연구 논문을 읽을 수 있다는 것이고, 나쁜 점은 얻은 결과가 모두 완벽하지는 않다는 것입니다. 그러나 내 옆에 관계를 수동으로 추출할 준비가 된 과학자 팀이 없다는 점을 감안할 때 NLP 기술을 사용하여 내 자신의 생물 의학 지식 그래프를 구성할 것입니다.

이 블로그 게시물에서 단일 연구 논문을 사용하여 생물 의학 지식 그래프를 구성하는 데 필요한 모든 단계를 안내합니다. 피부 재생 및 모발 성장의 조직 공학.

에 의해 작성된 논문 모하마드레자 아마디. 기사의 PDF 버전은 CC0 1.0 라이선스에 따라 사용할 수 있습니다. 지식 그래프를 구성하려면 다음 단계를 수행합니다.

  • OCR로 PDF 문서 읽기
  • 텍스트 전처리
  • 의생명 개념 인식 및 연계
  • 관계 추출
  • 외부 데이터베이스 강화

이 포스트를 마치면 다음 스키마로 그래프를 구성할 것입니다.

생물 의학 그래프 스키마. 저자의 이미지.

레이블이 지정된 속성 그래프 모델을 특징으로 하는 그래프 데이터베이스인 Neo4j를 사용하여 그래프를 저장합니다. 각 기사에는 한 명 이상의 작성자가 있을 수 있습니다. 기사 내용을 문장으로 나누고 NLP를 사용하여 의료 개체와 그 관계를 모두 추출합니다. 엔티티 간의 관계를 관계 대신 중간 노드로 저장하는 것은 다소 직관적이지 않을 수 있습니다. 이 결정의 핵심 요소는 관계가 추출된 원본 텍스트의 감사 추적을 원한다는 것입니다. 레이블이 지정된 속성 그래프 모델을 사용하면 다른 관계를 가리키는 관계를 가질 수 없습니다. 이러한 이유로 우리는 의료 개념 간의 연결을 중간 노드로 리팩토링합니다. 이를 통해 도메인 전문가는 관계가 올바르게 추출되었는지 여부를 평가할 수도 있습니다.

그 과정에서 생성된 그래프를 사용하여 저장된 정보를 검색하고 분석하는 응용 프로그램도 보여줍니다.

바로 그것에 뛰어 들자!

이 심층 교육 콘텐츠가 도움이된다면 AI 연구 메일 링리스트 구독 새로운 자료를 공개 할 때 경고를받습니다.

OCR로 PDF 문서 읽기

언급했듯이 연구 논문의 PDF 버전은 CC0 1.0 라이선스에 따라 대중이 액세스할 수 있으므로 Python으로 쉽게 다운로드할 수 있습니다. 우리는 사용할 것입니다 피 테서 랙트 PDF에서 텍스트를 추출하는 라이브러리. 내가 아는 한, pytesseract 라이브러리는 OCR에서 가장 인기 있는 라이브러리 중 하나입니다. 코드 예제를 따라하고 싶다면 제가 준비했습니다. Google Colab 노트북, 따라서 코드를 직접 복사하여 붙여넣을 필요가 없습니다.

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)

텍스트 전처리

이제 기사 콘텐츠를 사용할 수 있으므로 텍스트에서 섹션 제목과 그림 설명을 제거하겠습니다. 다음으로 텍스트를 문장으로 나눕니다.

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)

생물의학 명명 엔티티 연결

이제 흥미로운 부분이 나옵니다. NLP와 명명된 엔터티 인식 및 연결을 처음 접하는 사용자를 위해 몇 가지 기본 사항부터 시작하겠습니다. 명명된 개체 인식 기술은 텍스트에서 관련 개체 또는 개념을 감지하는 데 사용됩니다. 예를 들어, 생물의학 영역에서는 텍스트에서 다양한 유전자, 약물, 질병 및 기타 개념을 식별하고자 합니다.

생물의학 개념 추출. 저자의 이미지.

이 예에서 NLP 모델은 텍스트에서 유전자, 질병, 약물, 종, 돌연변이 및 경로를 식별했습니다. 언급했듯이 이 프로세스를 명명된 엔터티 인식이라고 합니다. 명명된 개체 인식으로의 업그레이드는 소위 명명된 개체 연결입니다. 명명된 엔터티 연결 기술은 텍스트에서 관련 개념을 감지하고 대상 지식 기반에 매핑하려고 시도합니다. 생물의학 영역에서 대상 지식 기반 중 일부는 다음과 같습니다.

의료 기관을 대상 지식 기반에 연결하려는 이유는 무엇입니까? 주된 이유는 엔티티 명확화를 처리하는 데 도움이 되기 때문입니다. 예를 들어, 도메인 전문가가 동일한 것으로 말할 수 있기 때문에 그래프에서 아스코르브산과 비타민 C를 나타내는 별도의 엔터티를 원하지 않습니다. 두 번째 이유는 개념을 대상 지식 기반에 매핑함으로써 대상 지식 기반에서 매핑된 개념에 대한 정보를 가져와 그래프 모델을 강화할 수 있기 때문입니다. 아스코르브산 예제를 다시 사용하면 이미 알고 있는 경우 CHEBI 데이터베이스에서 추가 정보를 쉽게 가져올 수 있습니다. 체비 아이디.

CHEBI 웹사이트에서 아스코르브산에 대한 농축 데이터를 사용할 수 있습니다. 웹사이트의 모든 콘텐츠는 아래에서 사용할 수 있습니다. CC BY 4.0 라이선스. 저자의 이미지.

나는 한동안 괜찮은 오픈 소스 사전 훈련된 생물 의학 이름의 엔터티 연결을 찾고 있었습니다. 많은 NLP 모델은 유전자나 질병과 같은 의학적 개념의 특정 하위 집합만 추출하는 데 중점을 둡니다. 대부분의 의학적 개념을 감지하고 이를 대상 지식 기반에 연결하는 모델을 찾는 것은 훨씬 더 드뭅니다. 운 좋게 나는 우연히 만났다 베른[1], 신경 생의학 개체 인식 및 다중 유형 정규화 도구. 내가 올바르게 이해하면 개념을 생물 의학 대상 지식 기반에 매핑하기 위해 통합된 다양한 명명된 엔터티 연결 모델이 있는 미세 조정된 BioBert 모델입니다. 뿐만 아니라 무료 REST 엔드포인트도 제공하므로 종속성과 모델을 작동시키는 데 어려움을 겪지 않아도 됩니다. 위에서 사용한 생물 의학 명명된 개체 인식 시각화는 BERN 모델을 사용하여 만들어졌으므로 텍스트에서 유전자, 질병, 약물, 종, 돌연변이 및 경로를 감지한다는 것을 알고 있습니다.

불행히도 BERN 모델은 모든 개념에 대상 지식 기반 ID를 할당하지 않습니다. 그래서 개념에 대해 고유한 id가 부여되었는지 먼저 확인하고 그렇지 않은 경우 엔터티 이름을 id로 사용하는 스크립트를 준비했습니다. 또한 나중에 관계 추출을 할 때 특정 문장을 더 쉽게 식별하기 위해 문장 텍스트의 sha256을 계산합니다.

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

명명된 엔터티 연결 결과를 확인했는데 예상대로 완벽하지 않습니다. 예를 들어, 줄기 세포를 의학적 개념으로 식별하지 않습니다. 반면에 "심장, 뇌, 신경, 신장"이라는 단일 개체를 감지했습니다. 그러나 BERN은 여전히 ​​내가 조사하는 동안 찾을 수 있는 최고의 오픈 소스 생물의학 모델입니다.

지식 그래프 구성

관계 추출 기법을 살펴보기 전에 엔터티만을 사용하여 생물 의학 지식 그래프를 구성하고 가능한 응용 프로그램을 검토합니다. 말씀드린대로 제가 준비한 Google Colab 노트북 이 게시물의 코드 예제를 따르는 데 사용할 수 있습니다. 그래프를 저장하기 위해 Neo4j를 사용할 것입니다. 로컬 Neo4j 환경을 준비할 필요가 없습니다. 대신 무료 Neo4j Sandbox 인스턴스를 사용할 수 있습니다.

Neo4j 샌드박스

시작 샌드박스의 빈 프로젝트 연결 세부 정보를 Colab 노트북에 복사합니다.

Neo4j 샌드박스 연결 세부정보입니다. 저자의 이미지.

이제 노트북에서 Neo4j 연결을 준비할 수 있습니다.

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

저자와 기사를 그래프로 가져오는 것부터 시작하겠습니다. 기사 노드에는 제목만 포함됩니다.

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

Neo4j 브라우저를 열면 다음 그래프가 표시되어야 합니다.

저자의 이미지.

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

다음 Cypher 쿼리를 실행하여 구성된 그래프를 검사할 수 있습니다.

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

데이터를 올바르게 가져온 경우 유사한 시각화가 표시되어야 합니다.

그래프로 저장된 항목 추출. 저자의 이미지.

지식 그래프 애플리케이션

관계 추출 흐름이 없더라도 그래프에는 이미 몇 가지 사용 사례가 있습니다.

검색 엔진

그래프를 검색 엔진으로 사용할 수 있습니다. 예를 들어 다음 Cypher 쿼리를 사용하여 특정 의료 개체를 언급하는 문장이나 기사를 찾을 수 있습니다.

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

결과

저자의 이미지.

동시 발생 분석

두 번째 옵션은 동시 발생 분석입니다. 동일한 문장이나 기사에 나타나는 경우 의료 개체 간의 동시 발생을 정의할 수 있습니다. 의료 동시 발생 네트워크를 사용하여 의료 개체 간의 새로운 가능한 연결을 예측하는 기사[2]를 찾았습니다.

MeSH 동시 발생 네트워크에서 링크 예측: 예비 결과 – PubMed

다음 Cypher 쿼리를 사용하여 동일한 문장에서 자주 함께 발생하는 엔터티를 찾을 수 있습니다.

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

결과

엔티티1 엔티티2 동시 발생
피부병 당뇨병 성 궤양 2
만성 상처 당뇨병 성 궤양 2
피부병 만성 상처 2

분명히 수천 개 이상의 기사를 분석하면 결과가 더 좋을 것입니다.

저자 전문성 검사

또한 이 그래프를 사용하여 저자가 가장 자주 쓰는 의료 기관을 조사하여 저자의 전문 지식을 찾을 수 있습니다. 이 정보를 바탕으로 향후 협업을 제안할 수도 있습니다.

다음 Cypher 쿼리를 실행하여 단일 저자가 연구 논문에서 언급한 의료 개체를 검사합니다.

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

결과

저자 실재 계산
모하마드레자 아마디 콜라겐 9
모하마드레자 아마디 화상 4
모하마드레자 아마디 피부병 4
모하마드레자 아마디 콜라게나제 효소 2
모하마드레자 아마디 수포 표피 박리 2

관계 추출

이제 우리는 의료 개념 간의 관계를 추출하려고 노력할 것입니다. 내 경험에 따르면 관계 추출은 명명된 엔터티 추출보다 적어도 XNUMX배 더 어렵습니다. 명명된 엔터티 연결로 완벽한 결과를 기대해서는 안 되지만 관계 추출 기술에서 약간의 실수를 예상할 수 있습니다.

나는 사용 가능한 생물 의학 관계 추출 모델을 찾고 있었지만 기본적으로 작동하거나 미세 조정이 필요하지 않은 것을 찾지 못했습니다. 관계 추출 분야는 최첨단에 있는 것 같고, 앞으로 더 많은 관심을 받을 수 있기를 바랍니다. 불행히도 저는 NLP 전문가가 아니므로 제 모델을 미세 조정하는 것을 피했습니다. 대신 논문에 기반한 제로샷 관계 추출기를 사용할 것입니다. FewRel의 제로샷 한계 탐색[삼]. 이 모델을 프로덕션에 적용하는 것은 권장하지 않지만 간단한 데모에는 충분합니다. 모델은 다음에서 사용할 수 있습니다. 포옹 얼굴, 그래서 우리는 모델을 훈련하거나 설정하는 것을 다룰 필요가 없습니다.

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)

제로샷 관계 추출기를 사용하여 감지하려는 관계를 정의할 수 있습니다. 이 예에서는 관련 과 인터렉티브 관계. 나는 또한 대우, 원인 및 기타와 같은 더 구체적인 관계 유형을 시도했지만 결과는 좋지 않았습니다.

이 모델을 사용하면 관계를 감지하려는 엔터티 쌍 사이를 정의해야 합니다. 우리는 관계 추출 프로세스에 대한 입력으로 명명된 엔터티 연결의 결과를 사용할 것입니다. 먼저 둘 이상의 개체가 언급된 모든 문장을 찾은 다음 관계 추출 모델을 통해 실행하여 연결을 추출합니다. 또한 임계값 0.85를 정의했습니다. 즉, 모델이 0.85보다 낮은 확률로 엔터티 간의 연결을 예측하는 경우 예측을 무시합니다.

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

그래프에서 해당 관계를 추출하는 데 사용된 소스 텍스트와 관계를 저장합니다.

그래프에 저장된 추출된 관계. 저자의 이미지.

다음 Cypher 쿼리를 사용하여 엔터티와 원본 텍스트 간의 추출된 관계를 검사할 수 있습니다.

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

결과

저자의 이미지.

말씀하신대로 제가 관계를 추출하는데 사용한 NLP 모델은 완벽하지 않고, 제가 의사가 아니라서 얼마나 많은 연결을 놓쳤는지 모릅니다. 그러나 감지한 것은 합리적으로 보입니다.

외부 데이터베이스 강화

앞서 언급했듯이 CHEBI 또는 MESH와 같은 외부 데이터베이스를 사용하여 그래프를 풍부하게 만들 수 있습니다. 예를 들어 그래프에는 의료 개체가 포함되어 있습니다. 수포 표피 박리 MeSH ID도 알고 있습니다.

다음 쿼리를 사용하여 수포 표피박리의 MeSH ID를 검색할 수 있습니다.

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

계속해서 MeSH를 검사하여 사용 가능한 정보를 찾을 수 있습니다.

메시 연결 데이터

작가의 스크린샷. 데이터는 미국 국립 의학 도서관에서 제공한 것입니다.

다음은 수포성 표피박리증에 대한 MeSH 웹사이트에서 사용할 수 있는 정보의 스크린샷입니다. 언급했듯이 저는 의사가 아니므로 이 정보를 그래프로 모델링하는 가장 좋은 방법이 무엇인지 정확히 모릅니다. 그러나 MeSH REST 끝점에서 정보를 가져오기 위해 apoc.load.json 절차를 사용하여 Neo4j에서 이 정보를 검색하는 방법을 보여 드리겠습니다. 그런 다음 도메인 전문가에게 이 정보를 모델링하는 데 도움을 요청할 수 있습니다.

MeSH REST 끝점에서 정보를 가져오는 Cypher 쿼리는 다음과 같습니다.

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

기계 학습 데이터 입력으로서의 지식 그래프

마지막으로 생체 의학 지식 그래프를 기계 학습 워크플로에 대한 입력으로 사용하는 방법을 빠르게 안내해 드리겠습니다. 최근 몇 년 동안 노드 임베딩 분야에서 많은 연구와 발전이 있었습니다. 노드 임베딩 모델은 네트워크 토폴로지를 임베딩 공간으로 변환합니다.

저작권 © 2017 마난 샤, SNAP 그룹. MIT 라이선스에 따라 사용 가능한 이미지 https://github.com/snap-stanford/cs224w-notes.

다양한 의료 데이터베이스에서 의료 개체 및 개념, 관계 및 강화를 포함하는 생물 의학 지식 그래프를 구성했다고 가정합니다. 노드 임베딩 기술을 사용하여 고정 길이 벡터인 노드 표현을 학습하고 이를 기계 학습 워크플로에 입력할 수 있습니다. 약물 용도 변경에서 약물 부작용 또는 부작용 예측에 이르기까지 다양한 응용 프로그램에서 이 접근 방식을 사용하고 있습니다. 사용하는 연구 논문을 찾았습니다. 새로운 질병의 잠재적 치료에 대한 링크 예측[4].

결론

생물의학 영역은 지식 그래프를 적용할 수 있는 대표적인 예입니다. 단순한 검색 엔진에서 더 복잡한 기계 학습 워크플로에 이르기까지 다양한 응용 프로그램이 있습니다. 이 블로그 게시물을 읽고 생물의학 지식 그래프를 사용하여 응용 프로그램을 지원하는 방법에 대한 아이디어를 얻었기를 바랍니다. 다음을 시작할 수 있습니다. 무료 Neo4j 샌드박스 오늘부터 탐색을 시작합니다.

항상 그렇듯이 코드는 다음에서 사용할 수 있습니다. GitHub의.

참고자료

[1] 김디 ., "생물 의학 텍스트 마이닝을 위한 신경 명명 개체 인식 및 다중 유형 정규화 도구", IEEE 액세스, 권. 7, pp. 73729–73740, 2019, doi: 10.1109/ACCESS.2019.2920708.

[2] Kastrin A, Rindflesch TC, Hristovski D. MeSH 동시 발생 네트워크에서 링크 예측: 예비 결과. 스터드 건강 기술 정보. 2014;205:579–83. PMID: 25160252.

[3] Cetoli, A.(2020). FewRel의 제로샷 한계를 탐색합니다. ~ 안에 제 28회 전산언어학 국제학술대회(International Conference on Computational Linguistics) 회의록 (pp. 1447-1451). 전산 언어학에 관한 국제 위원회.

[4] Zhang, R., Hristovski, D., Schutte, D., Kastrin, A., Fiszman, M., & Kilicoglu, H. (2021). 지식 그래프 완성을 통한 COVID-19에 대한 약물 용도 변경. 의생명 정보학 저널, 115, 103696.

이 기사는 원래에 게시되었습니다. 데이터 과학을 향해 저자의 허락을 받아 TOPBOTS에 다시 게시했습니다.

이 기사가 마음에 드십니까? 더 많은 AI 업데이트에 가입하세요.

더 많은 기술 교육을 발표하면 알려 드리겠습니다.

포스트 NLP로 의생명 지식 그래프 구축 첫 번째 등장 톱봇.

타임 스탬프 :

더보기 톱봇