엔티티 링킹
Potato의 스팬 어노테이션을 외부 지식 베이스(Wikidata, UMLS, 맞춤형 엔티티 API)에 연결하며, 타입어헤드 검색과 구성 가능한 신뢰도 점수를 제공합니다.
엔티티 링킹을 사용하면 어노테이터가 스팬 어노테이션을 Wikidata나 UMLS 같은 외부 지식 베이스(KB)에 연결할 수 있습니다. 이를 통해 텍스트 멘션과 정규 엔티티 사이에 의미적 연결이 만들어지며, 개체명 인식, 개념 정규화, 지식 그래프 구축에 유용합니다.
작동 방식
스팬 어노테이션 스키마에서 엔티티 링킹이 활성화되면 다음과 같이 동작합니다.
- 어노테이터가 텍스트를 강조하고 레이블(예: "PERSON", "ORGANIZATION")을 지정합니다
- 스팬의 제어 막대에 링크 아이콘이 나타납니다
- 아이콘을 클릭하면 일치하는 KB 엔티티를 찾는 검색 모달이 열립니다
- 선택한 엔티티 ID가 스팬 어노테이션과 함께 저장됩니다
- 연결된 스팬은 채워진 아이콘을 표시하고, 커서를 올리면 엔티티 세부 정보를 보여줍니다
빠른 시작
스팬 스키마에 entity_linking 구성을 추가하여 엔티티 링킹을 활성화합니다.
annotation_schemes:
- annotation_type: span
name: ner
description: Named Entity Recognition with KB linking
labels:
- name: PERSON
tooltip: "People's names"
- name: ORGANIZATION
tooltip: "Companies, agencies, institutions"
- name: LOCATION
tooltip: "Places, cities, countries"
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en구성 옵션
| 옵션 | 유형 | 기본값 | 설명 |
|---|---|---|---|
enabled | boolean | false | 이 스키마에 엔티티 링킹을 활성화 |
knowledge_bases | list | [] | KB 구성 목록 |
auto_search | boolean | true | 모달이 열릴 때 자동으로 검색 |
required | boolean | false | 스팬을 저장하기 전에 엔티티 링크를 필수로 요구 |
multi_select | boolean | false | 여러 엔티티에 연결 허용 |
지식 베이스 구성
| 옵션 | 유형 | 기본값 | 설명 |
|---|---|---|---|
name | string | 필수 | 이 KB의 고유 식별자 |
type | string | 필수 | KB 유형: wikidata, umls, rest |
api_key | string | null | 인증이 필요한 서비스용 API 키 |
base_url | string | null | REST API의 기본 URL |
language | string | "en" | 검색 결과의 언어 코드 |
timeout | integer | 10 | 요청 제한 시간(초) |
지원되는 지식 베이스
Wikidata
1억 개 이상의 엔티티를 가진 무료 오픈 지식 베이스입니다. API 키가 필요하지 않습니다.
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en다국어 레이블, 엔티티 별칭(예: "NYC"를 입력하면 "New York City"를 찾음), 위키백과 문서 링크를 제공합니다.
UMLS
포괄적인 의학 및 생의학 용어 체계입니다. UTS에서 발급하는 무료 API 키가 필요합니다.
entity_linking:
enabled: true
knowledge_bases:
- name: umls
type: umls
api_key: ${UMLS_API_KEY}의학 개념, 약물, 질병, 시술과 200개 이상의 출처 어휘(SNOMED CT, ICD-10, MeSH, RxNorm)에 대한 상호 참조를 포함합니다.
맞춤형 REST API
REST API를 갖춘 모든 지식 베이스에 연결할 수 있습니다.
entity_linking:
enabled: true
knowledge_bases:
- name: internal_kb
type: rest
base_url: https://api.example.com
api_key: optional_api_key
extra_params:
search_endpoint: /search
entity_endpoint: /entity/{entity_id}
search_query_param: q
results_path: data.results
entity_id_field: id
label_field: name
description_field: description여러 지식 베이스
여러 KB를 구성하여 어노테이터가 가장 적합한 출처를 선택하도록 할 수 있습니다.
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en
- name: umls
type: umls
api_key: ${UMLS_API_KEY}
- name: company_entities
type: rest
base_url: https://internal.company.com/api/entities검색 모달의 드롭다운을 통해 어노테이터가 구성된 지식 베이스 사이를 전환할 수 있습니다.
다중 선택 모드
다중 선택을 활성화하면 하나의 스팬을 여러 엔티티에 연결할 수 있어, 모호한 멘션에 유용합니다.
entity_linking:
enabled: true
multi_select: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en데이터 형식
엔티티가 연결된 스팬은 출력에 추가 필드를 포함합니다.
{
"id": "instance_001",
"text": "Albert Einstein was born in Ulm, Germany in 1879.",
"annotations": {
"ner": {
"spans": [
{
"text": "Albert Einstein",
"start": 0,
"end": 15,
"label": "PERSON",
"kb_id": "Q937",
"kb_source": "wikidata",
"kb_label": "Albert Einstein"
},
{
"text": "Ulm",
"start": 28,
"end": 31,
"label": "LOCATION",
"kb_id": "Q3012",
"kb_source": "wikidata",
"kb_label": "Ulm"
}
]
}
}
}모범 사례
- 자동 검색을 활성화하세요 - 효율을 높이며, 스팬 텍스트로 검색을 미리 채웁니다
- 꼭 필요한 경우가 아니면 링크를 필수로 요구하지 마세요 - 엔티티를 찾지 못했다고 해서 어노테이션을 막지 마세요
- 적절한 제한 시간을 설정하세요 - 느린 네트워크를 고려하세요
- KB를 엔티티 유형에 맞추세요 - 일반 엔티티에는 Wikidata, 생의학 용어에는 UMLS, 도메인 특화 엔티티에는 맞춤형 API를 사용하세요
- 모호한 멘션에는 다중 선택을 사용하세요 - 약어, 흔한 이름, 다의어 등
더 읽어보기
구현 세부 사항은 원본 문서를 참조하세요.