memento-mcp-server 1.14.0 β†’ 1.15.0

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.
Files changed (77) hide show
  1. package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.d.ts +18 -0
  2. package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.d.ts.map +1 -0
  3. package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.js +346 -0
  4. package/dist/domains/memory/tools/convert-episodic-to-semantic-tool.js.map +1 -0
  5. package/dist/domains/memory/tools/remember-tool.d.ts.map +1 -1
  6. package/dist/domains/memory/tools/remember-tool.js +182 -1
  7. package/dist/domains/memory/tools/remember-tool.js.map +1 -1
  8. package/dist/infrastructure/database/database/migration/migrations/005-relation-engine-schema.sql +7 -7
  9. package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.d.ts +65 -0
  10. package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.d.ts.map +1 -0
  11. package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.js +250 -0
  12. package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.js.map +1 -0
  13. package/dist/infrastructure/database/database/migration/migrations/008-arigraph-schema-expansion.sql +86 -0
  14. package/dist/infrastructure/logging/triple-extraction-logger.d.ts +92 -0
  15. package/dist/infrastructure/logging/triple-extraction-logger.d.ts.map +1 -0
  16. package/dist/infrastructure/logging/triple-extraction-logger.js +194 -0
  17. package/dist/infrastructure/logging/triple-extraction-logger.js.map +1 -0
  18. package/dist/infrastructure/scheduler/batch-scheduler.d.ts +57 -0
  19. package/dist/infrastructure/scheduler/batch-scheduler.d.ts.map +1 -1
  20. package/dist/infrastructure/scheduler/batch-scheduler.js +220 -0
  21. package/dist/infrastructure/scheduler/batch-scheduler.js.map +1 -1
  22. package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.d.ts +194 -0
  23. package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.d.ts.map +1 -0
  24. package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.js +639 -0
  25. package/dist/infrastructure/scheduler/jobs/triple-extraction-batch-job.js.map +1 -0
  26. package/dist/services/semantic-memory/semantic-memory-statistics.d.ts +64 -0
  27. package/dist/services/semantic-memory/semantic-memory-statistics.d.ts.map +1 -0
  28. package/dist/services/semantic-memory/semantic-memory-statistics.js +113 -0
  29. package/dist/services/semantic-memory/semantic-memory-statistics.js.map +1 -0
  30. package/dist/services/semantic-memory/semantic-memory-update-service.d.ts +257 -0
  31. package/dist/services/semantic-memory/semantic-memory-update-service.d.ts.map +1 -0
  32. package/dist/services/semantic-memory/semantic-memory-update-service.js +696 -0
  33. package/dist/services/semantic-memory/semantic-memory-update-service.js.map +1 -0
  34. package/dist/services/triple-extraction/entity-linker.d.ts +55 -0
  35. package/dist/services/triple-extraction/entity-linker.d.ts.map +1 -0
  36. package/dist/services/triple-extraction/entity-linker.js +154 -0
  37. package/dist/services/triple-extraction/entity-linker.js.map +1 -0
  38. package/dist/services/triple-extraction/predicate-canonicalizer.d.ts +63 -0
  39. package/dist/services/triple-extraction/predicate-canonicalizer.d.ts.map +1 -0
  40. package/dist/services/triple-extraction/predicate-canonicalizer.js +166 -0
  41. package/dist/services/triple-extraction/predicate-canonicalizer.js.map +1 -0
  42. package/dist/services/triple-extraction/triple-extraction-service.d.ts +181 -0
  43. package/dist/services/triple-extraction/triple-extraction-service.d.ts.map +1 -0
  44. package/dist/services/triple-extraction/triple-extraction-service.js +907 -0
  45. package/dist/services/triple-extraction/triple-extraction-service.js.map +1 -0
  46. package/dist/services/triple-extraction/triple-extraction-statistics.d.ts +74 -0
  47. package/dist/services/triple-extraction/triple-extraction-statistics.d.ts.map +1 -0
  48. package/dist/services/triple-extraction/triple-extraction-statistics.js +146 -0
  49. package/dist/services/triple-extraction/triple-extraction-statistics.js.map +1 -0
  50. package/dist/shared/types/index.d.ts +1 -0
  51. package/dist/shared/types/index.d.ts.map +1 -1
  52. package/dist/shared/types/index.js.map +1 -1
  53. package/dist/shared/types/triple-extraction.d.ts +99 -0
  54. package/dist/shared/types/triple-extraction.d.ts.map +1 -0
  55. package/dist/shared/types/triple-extraction.js +6 -0
  56. package/dist/shared/types/triple-extraction.js.map +1 -0
  57. package/dist/shared/utils/pii-masker.d.ts +67 -0
  58. package/dist/shared/utils/pii-masker.d.ts.map +1 -0
  59. package/dist/shared/utils/pii-masker.js +205 -0
  60. package/dist/shared/utils/pii-masker.js.map +1 -0
  61. package/dist/shared/utils/prompt-template-loader.d.ts +42 -0
  62. package/dist/shared/utils/prompt-template-loader.d.ts.map +1 -0
  63. package/dist/shared/utils/prompt-template-loader.js +92 -0
  64. package/dist/shared/utils/prompt-template-loader.js.map +1 -0
  65. package/dist/shared/utils/triple-cache.d.ts +90 -0
  66. package/dist/shared/utils/triple-cache.d.ts.map +1 -0
  67. package/dist/shared/utils/triple-cache.js +124 -0
  68. package/dist/shared/utils/triple-cache.js.map +1 -0
  69. package/dist/tools/index.d.ts +2 -1
  70. package/dist/tools/index.d.ts.map +1 -1
  71. package/dist/tools/index.js +3 -1
  72. package/dist/tools/index.js.map +1 -1
  73. package/dist/tools/types.d.ts +1 -0
  74. package/dist/tools/types.d.ts.map +1 -1
  75. package/dist/tools/types.js +2 -0
  76. package/dist/tools/types.js.map +1 -1
  77. 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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"}