02-types-entity
Dec 7, 2025
EntityNode
📁 관련 코드:
lib/types/nodes/entity.ts
이메일에서 추출된 **명명된 개체(Named Entity)**를 저장합니다.
핵심 개념: Named Entity란?
Entity vs Person
Entity | Person | |
|---|---|---|
정의 | 사물, 조직, 장소 등 | 사람 |
식별자 | canonicalName | |
예시 | ABC회사, 프로젝트X | 김철수 |
왜 분리하는가?
Person은 이메일로 고유 식별 가능
Entity는 이름만으로 식별 (동음이의어 문제)
EntityType
분류 기준
타입 | 키워드/패턴 | 예시 |
|---|---|---|
COMPANY | 회사, Inc., Corp., Ltd. | "ABC Inc.", "네이버" |
PRODUCT | 제품, 서비스, 앱, 플랫폼 | "iPhone", "Slack" |
PROJECT | 프로젝트, TF, 이니셔티브 | "프로젝트 알파", "2024 리뉴얼" |
LOCATION | 도시, 국가, 빌딩, 회의실 | "서울", "회의실 A" |
EVENT | 컨퍼런스, 세미나, 미팅 | "CES 2024", "개발자 데이" |
Canonical Name: 동일 엔티티 매칭
문제 상황
해결: canonicalizeName 함수
정규화 규칙:
소문자 변환
앞뒤 공백 제거
특수문자 제거 (알파벳, 숫자, 한글, 공백만 유지)
연속 공백 단일화
한계와 보완
→ aliases 배열로 해결
Aliases: 이름 변형 처리
사용 시나리오
시나리오 1: 약어 처리
시나리오 2: 오타 처리
시나리오 3: 다국어
mightBeSameEntity: 중복 감지
검사 로직
사용 예시
Mention Statistics
왜 통계가 필요한가?
시나리오: "자주 언급되는 회사가 뭐야?"
시나리오: "최근에 논의된 프로젝트"
그래프에서의 관계
Entity 간 관계
Factory 사용 예시
다음 문서
→ TaskNode: 할일/요청 스키마
→ PersonNode: Person과 Entity의 관계