memento-mcp-server 1.14.0-b → 1.15.0-c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.d.ts +18 -0
- package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.d.ts.map +1 -0
- package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.js +346 -0
- package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.js.map +1 -0
- package/dist/domains/memory/tools/recall-tool.d.ts +177 -0
- package/dist/domains/memory/tools/recall-tool.d.ts.map +1 -1
- package/dist/domains/memory/tools/recall-tool.js +329 -3
- package/dist/domains/memory/tools/recall-tool.js.map +1 -1
- package/dist/domains/memory/tools/remember-tool.d.ts.map +1 -1
- package/dist/domains/memory/tools/remember-tool.js +182 -1
- package/dist/domains/memory/tools/remember-tool.js.map +1 -1
- package/dist/infrastructure/database/database/migration/migrations/005-relation-engine-schema.sql +7 -7
- package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.d.ts +65 -0
- package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.d.ts.map +1 -0
- package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.js +250 -0
- package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.js.map +1 -0
- package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.sql +86 -0
- package/dist/infrastructure/logging/triple-extraction-logger.d.ts +92 -0
- package/dist/infrastructure/logging/triple-extraction-logger.d.ts.map +1 -0
- package/dist/infrastructure/logging/triple-extraction-logger.js +194 -0
- package/dist/infrastructure/logging/triple-extraction-logger.js.map +1 -0
- package/dist/infrastructure/scheduler/batch-scheduler.d.ts +57 -0
- package/dist/infrastructure/scheduler/batch-scheduler.d.ts.map +1 -1
- package/dist/infrastructure/scheduler/batch-scheduler.js +220 -0
- package/dist/infrastructure/scheduler/batch-scheduler.js.map +1 -1
- package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.d.ts +194 -0
- package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.d.ts.map +1 -0
- package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.js +639 -0
- package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.js.map +1 -0
- package/dist/services/semantic-memory/semantic-memory-statistics.d.ts +64 -0
- package/dist/services/semantic-memory/semantic-memory-statistics.d.ts.map +1 -0
- package/dist/services/semantic-memory/semantic-memory-statistics.js +113 -0
- package/dist/services/semantic-memory/semantic-memory-statistics.js.map +1 -0
- package/dist/services/semantic-memory/semantic-memory-update-service.d.ts +257 -0
- package/dist/services/semantic-memory/semantic-memory-update-service.d.ts.map +1 -0
- package/dist/services/semantic-memory/semantic-memory-update-service.js +696 -0
- package/dist/services/semantic-memory/semantic-memory-update-service.js.map +1 -0
- package/dist/services/triple-extraction/entity-linker.d.ts +55 -0
- package/dist/services/triple-extraction/entity-linker.d.ts.map +1 -0
- package/dist/services/triple-extraction/entity-linker.js +154 -0
- package/dist/services/triple-extraction/entity-linker.js.map +1 -0
- package/dist/services/triple-extraction/predicate-canonicalizer.d.ts +63 -0
- package/dist/services/triple-extraction/predicate-canonicalizer.d.ts.map +1 -0
- package/dist/services/triple-extraction/predicate-canonicalizer.js +166 -0
- package/dist/services/triple-extraction/predicate-canonicalizer.js.map +1 -0
- package/dist/services/triple-extraction/triple-extraction-service.d.ts +181 -0
- package/dist/services/triple-extraction/triple-extraction-service.d.ts.map +1 -0
- package/dist/services/triple-extraction/triple-extraction-service.js +907 -0
- package/dist/services/triple-extraction/triple-extraction-service.js.map +1 -0
- package/dist/services/triple-extraction/triple-extraction-statistics.d.ts +74 -0
- package/dist/services/triple-extraction/triple-extraction-statistics.d.ts.map +1 -0
- package/dist/services/triple-extraction/triple-extraction-statistics.js +146 -0
- package/dist/services/triple-extraction/triple-extraction-statistics.js.map +1 -0
- package/dist/shared/types/index.d.ts +1 -0
- package/dist/shared/types/index.d.ts.map +1 -1
- package/dist/shared/types/index.js.map +1 -1
- package/dist/shared/types/triple-extraction.d.ts +99 -0
- package/dist/shared/types/triple-extraction.d.ts.map +1 -0
- package/dist/shared/types/triple-extraction.js +6 -0
- package/dist/shared/types/triple-extraction.js.map +1 -0
- package/dist/shared/utils/pii-masker.d.ts +67 -0
- package/dist/shared/utils/pii-masker.d.ts.map +1 -0
- package/dist/shared/utils/pii-masker.js +205 -0
- package/dist/shared/utils/pii-masker.js.map +1 -0
- package/dist/shared/utils/prompt-template-loader.d.ts +42 -0
- package/dist/shared/utils/prompt-template-loader.d.ts.map +1 -0
- package/dist/shared/utils/prompt-template-loader.js +92 -0
- package/dist/shared/utils/prompt-template-loader.js.map +1 -0
- package/dist/shared/utils/triple-cache.d.ts +90 -0
- package/dist/shared/utils/triple-cache.d.ts.map +1 -0
- package/dist/shared/utils/triple-cache.js +124 -0
- package/dist/shared/utils/triple-cache.js.map +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-memory-update-service.js","sourceRoot":"","sources":["../../../src/services/semantic-memory/semantic-memory-update-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity Linker
|
|
3
|
+
* Subject/Object 엔티티를 정규화하고 동일한 엔티티로 연결합니다.
|
|
4
|
+
*/
|
|
5
|
+
import type { EntityLinkingResult } from '../../shared/types/triple-extraction.js';
|
|
6
|
+
/**
|
|
7
|
+
* Entity 사전
|
|
8
|
+
* 표준 엔티티와 동의어 매핑
|
|
9
|
+
*
|
|
10
|
+
* 구조:
|
|
11
|
+
* - key: 표준 엔티티 (canonical form)
|
|
12
|
+
* - value: 동의어 배열
|
|
13
|
+
*/
|
|
14
|
+
interface EntityDictionary {
|
|
15
|
+
[canonical: string]: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare class EntityLinker {
|
|
18
|
+
private dictionary;
|
|
19
|
+
private reverseIndex;
|
|
20
|
+
constructor(customDictionary?: EntityDictionary);
|
|
21
|
+
/**
|
|
22
|
+
* 역인덱스 구축 (동의어 -> 표준 엔티티)
|
|
23
|
+
*/
|
|
24
|
+
private buildReverseIndex;
|
|
25
|
+
/**
|
|
26
|
+
* 검색용 키 정규화
|
|
27
|
+
* 대소문자 무시, 공백 제거
|
|
28
|
+
*/
|
|
29
|
+
private normalizeKey;
|
|
30
|
+
/**
|
|
31
|
+
* 구조화된 엔티티인지 확인 (예외 규칙 적용)
|
|
32
|
+
* 숫자, 날짜, 시간 등은 변환하지 않음
|
|
33
|
+
*/
|
|
34
|
+
private isStructuredEntity;
|
|
35
|
+
/**
|
|
36
|
+
* Entity Linking 및 정규화 수행
|
|
37
|
+
*
|
|
38
|
+
* @param entity 원본 엔티티 문자열
|
|
39
|
+
* @returns EntityLinkingResult
|
|
40
|
+
*/
|
|
41
|
+
link(entity: string): EntityLinkingResult;
|
|
42
|
+
/**
|
|
43
|
+
* 여러 엔티티 일괄 Linking
|
|
44
|
+
*/
|
|
45
|
+
linkBatch(entities: string[]): EntityLinkingResult[];
|
|
46
|
+
/**
|
|
47
|
+
* 사전에 Entity 추가
|
|
48
|
+
*
|
|
49
|
+
* @param canonical 표준 엔티티
|
|
50
|
+
* @param synonyms 동의어 배열
|
|
51
|
+
*/
|
|
52
|
+
addEntity(canonical: string, synonyms: string[]): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=entity-linker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-linker.d.ts","sourceRoot":"","sources":["../../../src/services/triple-extraction/entity-linker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAEnF;;;;;;;GAOG;AACH,UAAU,gBAAgB;IACtB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAmBD,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,YAAY,CAAsB;gBAE9B,gBAAgB,CAAC,EAAE,gBAAgB;IAM/C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;;;OAKG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAuDhD;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE;IAI3D;;;;;OAKG;IACI,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAehE"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity Linker
|
|
3
|
+
* Subject/Object 엔티티를 정규화하고 동일한 엔티티로 연결합니다.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 기본 Entity 사전
|
|
7
|
+
* 자주 사용되는 일반적인 엔티티들에 대한 매핑
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_ENTITY_DICTIONARY = {
|
|
10
|
+
// 사용자 관련
|
|
11
|
+
'사용자': ['user', '유저', '사용자', '나', 'i', 'me', 'myself', '내'],
|
|
12
|
+
// 시스템/AI 관련
|
|
13
|
+
'시스템': ['system', '시스템', 'ai', 'artificial intelligence', 'assistant', '어시스턴트', '너', 'you', '당신'],
|
|
14
|
+
// 시간/날짜 관련 (상대적인 표현을 절대적인 개념으로 매핑하기는 어렵지만, 일반적인 표현 통일)
|
|
15
|
+
'오늘': ['today', '금일', '현재'],
|
|
16
|
+
'내일': ['tomorrow', '익일', '다음날'],
|
|
17
|
+
'어제': ['yesterday', '작일', '전날'],
|
|
18
|
+
};
|
|
19
|
+
export class EntityLinker {
|
|
20
|
+
dictionary;
|
|
21
|
+
reverseIndex; // 동의어 -> 표준 엔티티 매핑
|
|
22
|
+
constructor(customDictionary) {
|
|
23
|
+
this.dictionary = customDictionary || DEFAULT_ENTITY_DICTIONARY;
|
|
24
|
+
this.reverseIndex = new Map();
|
|
25
|
+
this.buildReverseIndex();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 역인덱스 구축 (동의어 -> 표준 엔티티)
|
|
29
|
+
*/
|
|
30
|
+
buildReverseIndex() {
|
|
31
|
+
this.reverseIndex = new Map();
|
|
32
|
+
for (const [canonical, synonyms] of Object.entries(this.dictionary)) {
|
|
33
|
+
// 표준 엔티티 자체도 매핑
|
|
34
|
+
this.reverseIndex.set(this.normalizeKey(canonical), canonical);
|
|
35
|
+
// 동의어들 매핑
|
|
36
|
+
for (const synonym of synonyms) {
|
|
37
|
+
this.reverseIndex.set(this.normalizeKey(synonym), canonical);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 검색용 키 정규화
|
|
43
|
+
* 대소문자 무시, 공백 제거
|
|
44
|
+
*/
|
|
45
|
+
normalizeKey(key) {
|
|
46
|
+
return key.toLowerCase().trim().replace(/\s+/g, '');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 구조화된 엔티티인지 확인 (예외 규칙 적용)
|
|
50
|
+
* 숫자, 날짜, 시간 등은 변환하지 않음
|
|
51
|
+
*/
|
|
52
|
+
isStructuredEntity(entity) {
|
|
53
|
+
const trimmed = entity.trim();
|
|
54
|
+
// 숫자 (정수, 실수, 음수 포함)
|
|
55
|
+
// 예: 123, -45.67, 0.5
|
|
56
|
+
if (/^-?\d+(\.\d+)?$/.test(trimmed))
|
|
57
|
+
return true;
|
|
58
|
+
// 날짜 (YYYY-MM-DD, YYYY/MM/DD, YYYY.MM.DD)
|
|
59
|
+
// 예: 2025-01-15, 2025/01/01
|
|
60
|
+
if (/^\d{4}[-./]\d{1,2}[-./]\d{1,2}$/.test(trimmed))
|
|
61
|
+
return true;
|
|
62
|
+
// 시간 (HH:MM, HH:MM:SS)
|
|
63
|
+
// 예: 14:30, 09:00:00
|
|
64
|
+
if (/^\d{1,2}:\d{1,2}(:\d{1,2})?$/.test(trimmed))
|
|
65
|
+
return true;
|
|
66
|
+
// 이메일 주소 (간단한 정규식)
|
|
67
|
+
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed))
|
|
68
|
+
return true;
|
|
69
|
+
// URL (http/https로 시작하는 경우)
|
|
70
|
+
if (/^https?:\/\//i.test(trimmed))
|
|
71
|
+
return true;
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Entity Linking 및 정규화 수행
|
|
76
|
+
*
|
|
77
|
+
* @param entity 원본 엔티티 문자열
|
|
78
|
+
* @returns EntityLinkingResult
|
|
79
|
+
*/
|
|
80
|
+
link(entity) {
|
|
81
|
+
if (!entity || typeof entity !== 'string') {
|
|
82
|
+
return {
|
|
83
|
+
linked: entity || '',
|
|
84
|
+
original: entity || '',
|
|
85
|
+
success: false,
|
|
86
|
+
normalized: false
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const trimmed = entity.trim();
|
|
90
|
+
if (trimmed.length === 0) {
|
|
91
|
+
return {
|
|
92
|
+
linked: '',
|
|
93
|
+
original: entity,
|
|
94
|
+
success: false,
|
|
95
|
+
normalized: false
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// 1. 구조화된 엔티티 예외 처리 (숫자, 날짜 등)
|
|
99
|
+
if (this.isStructuredEntity(trimmed)) {
|
|
100
|
+
return {
|
|
101
|
+
linked: trimmed,
|
|
102
|
+
original: trimmed,
|
|
103
|
+
success: true,
|
|
104
|
+
normalized: false // 변환하지 않았음을 표시
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// 2. 사전 기반 매핑 확인
|
|
108
|
+
const normalizedKey = this.normalizeKey(trimmed);
|
|
109
|
+
const canonical = this.reverseIndex.get(normalizedKey);
|
|
110
|
+
if (canonical) {
|
|
111
|
+
return {
|
|
112
|
+
linked: canonical,
|
|
113
|
+
original: trimmed,
|
|
114
|
+
success: true,
|
|
115
|
+
normalized: canonical !== trimmed
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// 3. 매핑되지 않은 경우 기본 정규화
|
|
119
|
+
// Lowercasing + 내부 다중 공백을 단일 공백으로 치환
|
|
120
|
+
let basicNormalized = trimmed.toLowerCase().replace(/\s+/g, ' ');
|
|
121
|
+
return {
|
|
122
|
+
linked: basicNormalized,
|
|
123
|
+
original: trimmed,
|
|
124
|
+
success: true, // 사전에는 없지만 일반 정규화 성공으로 간주 (Open World Assumption)
|
|
125
|
+
normalized: basicNormalized !== trimmed
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 여러 엔티티 일괄 Linking
|
|
130
|
+
*/
|
|
131
|
+
linkBatch(entities) {
|
|
132
|
+
return entities.map(entity => this.link(entity));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 사전에 Entity 추가
|
|
136
|
+
*
|
|
137
|
+
* @param canonical 표준 엔티티
|
|
138
|
+
* @param synonyms 동의어 배열
|
|
139
|
+
*/
|
|
140
|
+
addEntity(canonical, synonyms) {
|
|
141
|
+
if (!this.dictionary[canonical]) {
|
|
142
|
+
this.dictionary[canonical] = [];
|
|
143
|
+
}
|
|
144
|
+
// 중복 제거 후 추가
|
|
145
|
+
const existingSynonyms = new Set(this.dictionary[canonical]);
|
|
146
|
+
for (const synonym of synonyms) {
|
|
147
|
+
existingSynonyms.add(synonym);
|
|
148
|
+
}
|
|
149
|
+
this.dictionary[canonical] = Array.from(existingSynonyms);
|
|
150
|
+
// 역인덱스 재구축
|
|
151
|
+
this.buildReverseIndex();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=entity-linker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-linker.js","sourceRoot":"","sources":["../../../src/services/triple-extraction/entity-linker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predicate 정규화기 (Canonicalizer)
|
|
3
|
+
* 동의어/유사 표현을 표준 predicate로 변환합니다.
|
|
4
|
+
*
|
|
5
|
+
* AriGraph 논문을 참고하여 구현되었으며, 지식 그래프의 일관성을 보장합니다.
|
|
6
|
+
*/
|
|
7
|
+
import type { PredicateCanonicalizationResult } from '../../shared/types/triple-extraction.js';
|
|
8
|
+
/**
|
|
9
|
+
* Predicate 사전
|
|
10
|
+
* 표준 predicate와 동의어 매핑
|
|
11
|
+
*
|
|
12
|
+
* 구조:
|
|
13
|
+
* - key: 표준 predicate (canonical form)
|
|
14
|
+
* - value: 동의어 배열
|
|
15
|
+
*/
|
|
16
|
+
interface PredicateDictionary {
|
|
17
|
+
[canonical: string]: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Predicate 정규화기
|
|
21
|
+
*/
|
|
22
|
+
export declare class PredicateCanonicalizer {
|
|
23
|
+
private dictionary;
|
|
24
|
+
private reverseIndex;
|
|
25
|
+
constructor(customDictionary?: PredicateDictionary);
|
|
26
|
+
/**
|
|
27
|
+
* 역인덱스 구축 (동의어 -> 표준 predicate)
|
|
28
|
+
*/
|
|
29
|
+
private buildReverseIndex;
|
|
30
|
+
/**
|
|
31
|
+
* 키 정규화 (검색용)
|
|
32
|
+
* 대소문자 무시, 공백 제거
|
|
33
|
+
*/
|
|
34
|
+
private normalizeKey;
|
|
35
|
+
/**
|
|
36
|
+
* Predicate 정규화
|
|
37
|
+
*
|
|
38
|
+
* @param predicate 원본 predicate
|
|
39
|
+
* @returns 정규화 결과
|
|
40
|
+
*/
|
|
41
|
+
canonicalize(predicate: string): PredicateCanonicalizationResult;
|
|
42
|
+
/**
|
|
43
|
+
* 여러 Predicate 일괄 정규화
|
|
44
|
+
*/
|
|
45
|
+
canonicalizeBatch(predicates: string[]): PredicateCanonicalizationResult[];
|
|
46
|
+
/**
|
|
47
|
+
* 사전에 Predicate 추가
|
|
48
|
+
*
|
|
49
|
+
* @param canonical 표준 predicate
|
|
50
|
+
* @param synonyms 동의어 배열
|
|
51
|
+
*/
|
|
52
|
+
addPredicate(canonical: string, synonyms: string[]): void;
|
|
53
|
+
/**
|
|
54
|
+
* 사전 조회 (테스트/디버깅용)
|
|
55
|
+
*/
|
|
56
|
+
getDictionary(): Readonly<PredicateDictionary>;
|
|
57
|
+
/**
|
|
58
|
+
* 표준 predicate 목록 조회
|
|
59
|
+
*/
|
|
60
|
+
getCanonicalPredicates(): string[];
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=predicate-canonicalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate-canonicalizer.d.ts","sourceRoot":"","sources":["../../../src/services/triple-extraction/predicate-canonicalizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAG/F;;;;;;;GAOG;AACH,UAAU,mBAAmB;IAC3B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B;AAwED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,YAAY,CAAkC;gBAE1C,gBAAgB,CAAC,EAAE,mBAAmB;IAKlD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,+BAA+B;IAuChE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,+BAA+B,EAAE;IAI1E;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAgBzD;;OAEG;IACH,aAAa,IAAI,QAAQ,CAAC,mBAAmB,CAAC;IAI9C;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;CAGnC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predicate 정규화기 (Canonicalizer)
|
|
3
|
+
* 동의어/유사 표현을 표준 predicate로 변환합니다.
|
|
4
|
+
*
|
|
5
|
+
* AriGraph 논문을 참고하여 구현되었으며, 지식 그래프의 일관성을 보장합니다.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from '../../shared/utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* 기본 Predicate 사전
|
|
10
|
+
*
|
|
11
|
+
* 한글 predicate 중심으로 구성되며, 향후 확장 가능합니다.
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_PREDICATE_DICTIONARY = {
|
|
14
|
+
// 선호/좋아함 관련
|
|
15
|
+
'좋아함': ['좋아한다', '선호한다', '선호함', '좋아함', '좋아함', '선호', 'like', 'prefer', 'favorite'],
|
|
16
|
+
// 사용/활용 관련
|
|
17
|
+
'사용함': ['사용한다', '사용함', '활용한다', '활용함', '쓰다', 'use', 'utilize'],
|
|
18
|
+
// 생성/만들기 관련
|
|
19
|
+
'생성함': ['만든다', '생성한다', '생성함', '만들다', 'create', 'generate', 'make'],
|
|
20
|
+
// 삭제/제거 관련
|
|
21
|
+
'삭제함': ['삭제한다', '삭제함', '제거한다', '제거함', '지운다', 'delete', 'remove'],
|
|
22
|
+
// 업데이트/수정 관련
|
|
23
|
+
'업데이트함': ['업데이트한다', '업데이트함', '수정한다', '수정함', '변경한다', '변경함', 'update', 'modify', 'change'],
|
|
24
|
+
// 포함/포함함 관련
|
|
25
|
+
'포함함': ['포함한다', '포함함', '들어있다', 'include', 'contain'],
|
|
26
|
+
// 의존/의존함 관련
|
|
27
|
+
'의존함': ['의존한다', '의존함', '따른다', 'depend', 'rely'],
|
|
28
|
+
// 원인/원인함 관련
|
|
29
|
+
'원인함': ['원인이다', '원인함', '일으킨다', 'cause', 'lead to'],
|
|
30
|
+
// 참조/참조함 관련
|
|
31
|
+
'참조함': ['참조한다', '참조함', '언급한다', '언급함', 'reference', 'refer', 'mention'],
|
|
32
|
+
// 소유/소유함 관련
|
|
33
|
+
'소유함': ['소유한다', '소유함', '가지고 있다', 'has', 'own', 'possess'],
|
|
34
|
+
// 속함/속함 관련
|
|
35
|
+
'속함': ['속한다', '속함', 'belong to', 'belongs to'],
|
|
36
|
+
// 일치/일치함 관련
|
|
37
|
+
'일치함': ['일치한다', '일치함', '같다', '동일하다', 'match', 'equal', 'same'],
|
|
38
|
+
// 다름/다름 관련
|
|
39
|
+
'다름': ['다르다', '다름', '다르다', 'different', 'differs'],
|
|
40
|
+
// 연결/연결함 관련
|
|
41
|
+
'연결함': ['연결한다', '연결함', '연결되어 있다', 'connect', 'link'],
|
|
42
|
+
// 관련/관련함 관련
|
|
43
|
+
'관련함': ['관련한다', '관련함', '연관된다', '연관됨', 'related', 'relate', 'associated'],
|
|
44
|
+
// 필요/필요함 관련
|
|
45
|
+
'필요함': ['필요하다', '필요함', '필수이다', 'required', 'need', 'necessary'],
|
|
46
|
+
// 지원/지원함 관련
|
|
47
|
+
'지원함': ['지원한다', '지원함', '지지한다', 'support', 'back'],
|
|
48
|
+
// 반대/반대함 관련
|
|
49
|
+
'반대함': ['반대한다', '반대함', 'oppose', 'against'],
|
|
50
|
+
// 따라옴/따라옴 관련
|
|
51
|
+
'따라옴': ['따라온다', '따라옴', 'follow', 'follows'],
|
|
52
|
+
// 선행함/선행함 관련
|
|
53
|
+
'선행함': ['선행한다', '선행함', 'precede', 'precedes', 'before'],
|
|
54
|
+
// 후행함/후행함 관련
|
|
55
|
+
'후행함': ['후행한다', '후행함', 'succeed', 'succeeds', 'after']
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Predicate 정규화기
|
|
59
|
+
*/
|
|
60
|
+
export class PredicateCanonicalizer {
|
|
61
|
+
dictionary;
|
|
62
|
+
reverseIndex = new Map(); // 동의어 -> 표준 predicate 매핑
|
|
63
|
+
constructor(customDictionary) {
|
|
64
|
+
this.dictionary = customDictionary || DEFAULT_PREDICATE_DICTIONARY;
|
|
65
|
+
this.buildReverseIndex();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 역인덱스 구축 (동의어 -> 표준 predicate)
|
|
69
|
+
*/
|
|
70
|
+
buildReverseIndex() {
|
|
71
|
+
this.reverseIndex = new Map();
|
|
72
|
+
for (const [canonical, synonyms] of Object.entries(this.dictionary)) {
|
|
73
|
+
// 표준 predicate 자체도 매핑
|
|
74
|
+
this.reverseIndex.set(this.normalizeKey(canonical), canonical);
|
|
75
|
+
// 동의어들 매핑
|
|
76
|
+
for (const synonym of synonyms) {
|
|
77
|
+
this.reverseIndex.set(this.normalizeKey(synonym), canonical);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 키 정규화 (검색용)
|
|
83
|
+
* 대소문자 무시, 공백 제거
|
|
84
|
+
*/
|
|
85
|
+
normalizeKey(key) {
|
|
86
|
+
return key.toLowerCase().trim().replace(/\s+/g, '');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Predicate 정규화
|
|
90
|
+
*
|
|
91
|
+
* @param predicate 원본 predicate
|
|
92
|
+
* @returns 정규화 결과
|
|
93
|
+
*/
|
|
94
|
+
canonicalize(predicate) {
|
|
95
|
+
if (!predicate || typeof predicate !== 'string') {
|
|
96
|
+
return {
|
|
97
|
+
canonical: predicate || '',
|
|
98
|
+
original: predicate || '',
|
|
99
|
+
success: false
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const trimmed = predicate.trim();
|
|
103
|
+
if (trimmed.length === 0) {
|
|
104
|
+
return {
|
|
105
|
+
canonical: '',
|
|
106
|
+
original: predicate,
|
|
107
|
+
success: false
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// 정규화된 키로 검색
|
|
111
|
+
const normalizedKey = this.normalizeKey(trimmed);
|
|
112
|
+
const canonical = this.reverseIndex.get(normalizedKey);
|
|
113
|
+
if (canonical) {
|
|
114
|
+
return {
|
|
115
|
+
canonical,
|
|
116
|
+
original: trimmed,
|
|
117
|
+
success: true,
|
|
118
|
+
synonym: canonical !== trimmed ? trimmed : undefined
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// 매칭되지 않은 경우 원본 반환 (정규화 실패)
|
|
122
|
+
return {
|
|
123
|
+
canonical: trimmed,
|
|
124
|
+
original: trimmed,
|
|
125
|
+
success: false
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 여러 Predicate 일괄 정규화
|
|
130
|
+
*/
|
|
131
|
+
canonicalizeBatch(predicates) {
|
|
132
|
+
return predicates.map(pred => this.canonicalize(pred));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 사전에 Predicate 추가
|
|
136
|
+
*
|
|
137
|
+
* @param canonical 표준 predicate
|
|
138
|
+
* @param synonyms 동의어 배열
|
|
139
|
+
*/
|
|
140
|
+
addPredicate(canonical, synonyms) {
|
|
141
|
+
if (!this.dictionary[canonical]) {
|
|
142
|
+
this.dictionary[canonical] = [];
|
|
143
|
+
}
|
|
144
|
+
// 중복 제거 후 추가
|
|
145
|
+
const existingSynonyms = new Set(this.dictionary[canonical]);
|
|
146
|
+
for (const synonym of synonyms) {
|
|
147
|
+
existingSynonyms.add(synonym);
|
|
148
|
+
}
|
|
149
|
+
this.dictionary[canonical] = Array.from(existingSynonyms);
|
|
150
|
+
// 역인덱스 재구축
|
|
151
|
+
this.buildReverseIndex();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 사전 조회 (테스트/디버깅용)
|
|
155
|
+
*/
|
|
156
|
+
getDictionary() {
|
|
157
|
+
return { ...this.dictionary };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 표준 predicate 목록 조회
|
|
161
|
+
*/
|
|
162
|
+
getCanonicalPredicates() {
|
|
163
|
+
return Object.keys(this.dictionary);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=predicate-canonicalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate-canonicalizer.js","sourceRoot":"","sources":["../../../src/services/triple-extraction/predicate-canonicalizer.ts"],"names":[],"mappings":"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"}
|