@nahisaho/katashiro-analyzer 0.1.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 (61) hide show
  1. package/dist/entity/entity-extractor.d.ts +44 -0
  2. package/dist/entity/entity-extractor.d.ts.map +1 -0
  3. package/dist/entity/entity-extractor.js +176 -0
  4. package/dist/entity/entity-extractor.js.map +1 -0
  5. package/dist/entity/index.d.ts +6 -0
  6. package/dist/entity/index.d.ts.map +1 -0
  7. package/dist/entity/index.js +5 -0
  8. package/dist/entity/index.js.map +1 -0
  9. package/dist/index.d.ts +17 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +16 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interfaces.d.ts +37 -0
  14. package/dist/interfaces.d.ts.map +1 -0
  15. package/dist/interfaces.js +8 -0
  16. package/dist/interfaces.js.map +1 -0
  17. package/dist/quality/index.d.ts +6 -0
  18. package/dist/quality/index.d.ts.map +1 -0
  19. package/dist/quality/index.js +5 -0
  20. package/dist/quality/index.js.map +1 -0
  21. package/dist/quality/quality-scorer.d.ts +65 -0
  22. package/dist/quality/quality-scorer.d.ts.map +1 -0
  23. package/dist/quality/quality-scorer.js +308 -0
  24. package/dist/quality/quality-scorer.js.map +1 -0
  25. package/dist/relation/index.d.ts +6 -0
  26. package/dist/relation/index.d.ts.map +1 -0
  27. package/dist/relation/index.js +5 -0
  28. package/dist/relation/index.js.map +1 -0
  29. package/dist/relation/relation-analyzer.d.ts +80 -0
  30. package/dist/relation/relation-analyzer.d.ts.map +1 -0
  31. package/dist/relation/relation-analyzer.js +192 -0
  32. package/dist/relation/relation-analyzer.js.map +1 -0
  33. package/dist/structure/index.d.ts +5 -0
  34. package/dist/structure/index.d.ts.map +1 -0
  35. package/dist/structure/index.js +5 -0
  36. package/dist/structure/index.js.map +1 -0
  37. package/dist/structure/structure-analyzer.d.ts +108 -0
  38. package/dist/structure/structure-analyzer.d.ts.map +1 -0
  39. package/dist/structure/structure-analyzer.js +248 -0
  40. package/dist/structure/structure-analyzer.js.map +1 -0
  41. package/dist/text/index.d.ts +5 -0
  42. package/dist/text/index.d.ts.map +1 -0
  43. package/dist/text/index.js +5 -0
  44. package/dist/text/index.js.map +1 -0
  45. package/dist/text/text-analyzer.d.ts +56 -0
  46. package/dist/text/text-analyzer.d.ts.map +1 -0
  47. package/dist/text/text-analyzer.js +281 -0
  48. package/dist/text/text-analyzer.js.map +1 -0
  49. package/dist/topic/index.d.ts +6 -0
  50. package/dist/topic/index.d.ts.map +1 -0
  51. package/dist/topic/index.js +5 -0
  52. package/dist/topic/index.js.map +1 -0
  53. package/dist/topic/topic-modeler.d.ts +79 -0
  54. package/dist/topic/topic-modeler.d.ts.map +1 -0
  55. package/dist/topic/topic-modeler.js +267 -0
  56. package/dist/topic/topic-modeler.js.map +1 -0
  57. package/dist/types.d.ts +74 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +7 -0
  60. package/dist/types.js.map +1 -0
  61. package/package.json +39 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * EntityExtractor - エンティティ抽出
3
+ *
4
+ * @requirement REQ-ANALYZE-008
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-022
7
+ */
8
+ /**
9
+ * エンティティタイプ
10
+ */
11
+ export type EntityType = 'person' | 'organization' | 'location' | 'date' | 'time' | 'url' | 'email' | 'phone' | 'money' | 'percentage' | 'number';
12
+ /**
13
+ * 抽出されたエンティティ
14
+ */
15
+ export interface Entity {
16
+ readonly type: EntityType;
17
+ readonly text: string;
18
+ readonly start: number;
19
+ readonly end: number;
20
+ readonly normalized?: string;
21
+ readonly count?: number;
22
+ }
23
+ /**
24
+ * エンティティ抽出実装
25
+ */
26
+ export declare class EntityExtractor {
27
+ /**
28
+ * テキストからエンティティを抽出
29
+ */
30
+ extractEntities(text: string): Entity[];
31
+ /**
32
+ * 特定のタイプのエンティティのみ抽出
33
+ */
34
+ extractByType(text: string, type: EntityType): Entity[];
35
+ /**
36
+ * エンティティを正規化
37
+ */
38
+ normalizeEntity(entity: Entity): Entity;
39
+ /**
40
+ * 重複エンティティをマージ
41
+ */
42
+ mergeEntities(entities: Entity[]): Entity[];
43
+ }
44
+ //# sourceMappingURL=entity-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-extractor.d.ts","sourceRoot":"","sources":["../../src/entity/entity-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,cAAc,GACd,UAAU,GACV,MAAM,GACN,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,YAAY,GACZ,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAwCD;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA0DvC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE;IAoBvD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAqDvC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAgB5C"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * EntityExtractor - エンティティ抽出
3
+ *
4
+ * @requirement REQ-ANALYZE-008
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-022
7
+ */
8
+ /**
9
+ * 正規表現パターン定義
10
+ */
11
+ const PATTERNS = {
12
+ // URL pattern (stops at Japanese characters, whitespace, common punctuation)
13
+ url: /https?:\/\/[a-zA-Z0-9\-._~:/?#\[\]@!$&'()*+,;=%]+/g,
14
+ // Email pattern
15
+ email: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
16
+ // Japanese phone numbers
17
+ phone: /(?:0\d{1,4}[-\s]?\d{1,4}[-\s]?\d{4})|(?:\d{2,4}[-\s]\d{2,4}[-\s]\d{4})/g,
18
+ // Japanese dates
19
+ date: /(?:\d{4}年\d{1,2}月\d{1,2}日)|(?:\d{1,2}月\d{1,2}日)|(?:\d{4}[-/]\d{1,2}[-/]\d{1,2})/g,
20
+ // Time patterns
21
+ time: /(?:\d{1,2}:\d{2}(?::\d{2})?)|(?:\d{1,2}時\d{1,2}分(?:\d{1,2}秒)?)/g,
22
+ // Money amounts
23
+ money: /(?:[¥$€£]\s?[\d,]+(?:\.\d{2})?)|(?:[\d,]+(?:\.\d{2})?\s?(?:円|ドル|ユーロ))/g,
24
+ // Percentages
25
+ percentage: /\d+(?:\.\d+)?%/g,
26
+ // Numbers with units
27
+ number: /\d+(?:,\d{3})*(?:\.\d+)?(?:\s*(?:個|件|人|台|本|枚|回|年|月|日|時間|分|秒))?/g,
28
+ // Japanese organization names
29
+ organization: /(?:株式会社|有限会社|合同会社|一般社団法人|NPO法人|独立行政法人)[^\s、。]+|[^\s、。]+(?:株式会社|有限会社|合同会社)/g,
30
+ // Japanese locations
31
+ location: /(?:東京都|北海道|(?:大阪|京都|神奈川|埼玉|千葉|愛知|福岡|兵庫|広島|宮城|新潟|長野|静岡|岐阜|三重|滋賀|奈良|和歌山|岡山|山口|鳥取|島根|香川|徳島|愛媛|高知|福井|石川|富山|青森|岩手|秋田|山形|福島|茨城|栃木|群馬|山梨|長崎|熊本|大分|宮崎|鹿児島|沖縄)(?:府|県))[^\s、。]*(?:市|区|町|村)?/g,
32
+ // Japanese person names (simplified pattern)
33
+ person: /[一-龯]{1,4}(?:さん|様|氏|君|先生|教授|社長|部長|課長|係長|主任)/g,
34
+ };
35
+ /**
36
+ * エンティティ抽出実装
37
+ */
38
+ export class EntityExtractor {
39
+ /**
40
+ * テキストからエンティティを抽出
41
+ */
42
+ extractEntities(text) {
43
+ if (!text || text.trim().length === 0) {
44
+ return [];
45
+ }
46
+ const entities = [];
47
+ const extractionOrder = [
48
+ 'url',
49
+ 'email',
50
+ 'phone',
51
+ 'date',
52
+ 'time',
53
+ 'money',
54
+ 'percentage',
55
+ 'organization',
56
+ 'location',
57
+ 'person',
58
+ ];
59
+ // Track extracted ranges to avoid overlaps
60
+ const extractedRanges = [];
61
+ for (const type of extractionOrder) {
62
+ const pattern = PATTERNS[type];
63
+ if (!pattern)
64
+ continue;
65
+ // Reset regex lastIndex
66
+ pattern.lastIndex = 0;
67
+ let match;
68
+ while ((match = pattern.exec(text)) !== null) {
69
+ const start = match.index;
70
+ const end = start + match[0].length;
71
+ // Check for overlap with already extracted entities
72
+ const overlaps = extractedRanges.some(range => (start >= range.start && start < range.end) ||
73
+ (end > range.start && end <= range.end) ||
74
+ (start <= range.start && end >= range.end));
75
+ if (!overlaps) {
76
+ entities.push({
77
+ type,
78
+ text: match[0],
79
+ start,
80
+ end,
81
+ });
82
+ extractedRanges.push({ start, end });
83
+ }
84
+ }
85
+ }
86
+ // Sort by position
87
+ return entities.sort((a, b) => a.start - b.start);
88
+ }
89
+ /**
90
+ * 特定のタイプのエンティティのみ抽出
91
+ */
92
+ extractByType(text, type) {
93
+ const pattern = PATTERNS[type];
94
+ if (!pattern || !text)
95
+ return [];
96
+ const entities = [];
97
+ pattern.lastIndex = 0;
98
+ let match;
99
+ while ((match = pattern.exec(text)) !== null) {
100
+ entities.push({
101
+ type,
102
+ text: match[0],
103
+ start: match.index,
104
+ end: match.index + match[0].length,
105
+ });
106
+ }
107
+ return entities;
108
+ }
109
+ /**
110
+ * エンティティを正規化
111
+ */
112
+ normalizeEntity(entity) {
113
+ let normalized;
114
+ switch (entity.type) {
115
+ case 'phone':
116
+ // Remove hyphens and spaces
117
+ normalized = entity.text.replace(/[-\s]/g, '');
118
+ break;
119
+ case 'date': {
120
+ // Try to parse Japanese date format
121
+ const jpMatch = entity.text.match(/(\d{4})年(\d{1,2})月(\d{1,2})日/);
122
+ if (jpMatch?.[1] && jpMatch?.[2] && jpMatch?.[3]) {
123
+ normalized = `${jpMatch[1]}-${jpMatch[2].padStart(2, '0')}-${jpMatch[3].padStart(2, '0')}`;
124
+ }
125
+ else {
126
+ // Try standard date format
127
+ const stdMatch = entity.text.match(/(\d{4})[-/](\d{1,2})[-/](\d{1,2})/);
128
+ if (stdMatch?.[1] && stdMatch?.[2] && stdMatch?.[3]) {
129
+ normalized = `${stdMatch[1]}-${stdMatch[2].padStart(2, '0')}-${stdMatch[3].padStart(2, '0')}`;
130
+ }
131
+ }
132
+ break;
133
+ }
134
+ case 'money': {
135
+ // Extract numeric value
136
+ const numMatch = entity.text.match(/[\d,]+(?:\.\d+)?/);
137
+ if (numMatch) {
138
+ normalized = numMatch[0].replace(/,/g, '');
139
+ }
140
+ break;
141
+ }
142
+ case 'email':
143
+ // Lowercase email
144
+ normalized = entity.text.toLowerCase();
145
+ break;
146
+ case 'url':
147
+ // Lowercase URL
148
+ normalized = entity.text.toLowerCase();
149
+ break;
150
+ default:
151
+ normalized = entity.text;
152
+ }
153
+ return {
154
+ ...entity,
155
+ normalized,
156
+ };
157
+ }
158
+ /**
159
+ * 重複エンティティをマージ
160
+ */
161
+ mergeEntities(entities) {
162
+ const merged = new Map();
163
+ for (const entity of entities) {
164
+ const key = `${entity.type}:${entity.text}`;
165
+ const existing = merged.get(key);
166
+ if (existing) {
167
+ existing.count++;
168
+ }
169
+ else {
170
+ merged.set(key, { ...entity, count: 1 });
171
+ }
172
+ }
173
+ return Array.from(merged.values()).sort((a, b) => b.count - a.count);
174
+ }
175
+ }
176
+ //# sourceMappingURL=entity-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-extractor.js","sourceRoot":"","sources":["../../src/entity/entity-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Entity module exports
3
+ */
4
+ export { EntityExtractor, } from './entity-extractor.js';
5
+ export type { Entity, EntityType, } from './entity-extractor.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,MAAM,EACN,UAAU,GACX,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Entity module exports
3
+ */
4
+ export { EntityExtractor, } from './entity-extractor.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @nahisaho/katashiro-analyzer
3
+ * 分析・推論パッケージ
4
+ *
5
+ * @requirement REQ-ANALYZE-001 ~ REQ-ANALYZE-011
6
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
7
+ * @task TSK-020 ~ TSK-025
8
+ */
9
+ export type { ISummarizer, IFactChecker, IBiasDetector, IContradictionDetector, ITrendAnalyzer, ISentimentAnalyzer, IMoAEngine, } from './interfaces.js';
10
+ export type { Summary, FactCheckResult, BiasReport, Contradiction, TrendData, SentimentResult, MoAResponse, } from './types.js';
11
+ export { TextAnalyzer } from './text/index.js';
12
+ export { StructureAnalyzer, type Heading, type Section, type OutlineNode, type ListInfo, type CodeBlock, type TableInfo, type StructureAnalysis, } from './structure/index.js';
13
+ export { EntityExtractor, type Entity, type EntityType, } from './entity/index.js';
14
+ export { RelationAnalyzer, type RelationType, type EntityPair, type Relation, type GraphNode, type GraphEdge, type RelationGraph, } from './relation/index.js';
15
+ export { TopicModeler, type Topic, type TopicDistribution, type SimilarDocument, type DocumentCluster, } from './topic/index.js';
16
+ export { QualityScorer, type QualityDimension, type QualityScore, type QualityReport, } from './quality/index.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,OAAO,EACP,eAAe,EACf,UAAU,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,KAAK,MAAM,EACX,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @nahisaho/katashiro-analyzer
3
+ * 分析・推論パッケージ
4
+ *
5
+ * @requirement REQ-ANALYZE-001 ~ REQ-ANALYZE-011
6
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
7
+ * @task TSK-020 ~ TSK-025
8
+ */
9
+ // 実装
10
+ export { TextAnalyzer } from './text/index.js';
11
+ export { StructureAnalyzer, } from './structure/index.js';
12
+ export { EntityExtractor, } from './entity/index.js';
13
+ export { RelationAnalyzer, } from './relation/index.js';
14
+ export { TopicModeler, } from './topic/index.js';
15
+ export { QualityScorer, } from './quality/index.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,KAAK;AACL,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,iBAAiB,GAQlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,GAOjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAKb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,GAId,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Analyzerインターフェース定義
3
+ *
4
+ * @requirement REQ-ANALYZE-001 ~ REQ-ANALYZE-011
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ */
7
+ import type { Result, Content } from '@nahisaho/katashiro-core';
8
+ import type { Summary, FactCheckResult, BiasReport, Contradiction, TrendData, SentimentResult, MoAResponse } from './types.js';
9
+ /** @requirement REQ-ANALYZE-001 */
10
+ export interface ISummarizer {
11
+ summarize(content: Content, maxLength?: number): Promise<Result<Summary, Error>>;
12
+ }
13
+ /** @requirement REQ-ANALYZE-002 */
14
+ export interface IFactChecker {
15
+ check(claim: string, sources: Content[]): Promise<Result<FactCheckResult, Error>>;
16
+ }
17
+ /** @requirement REQ-ANALYZE-003 */
18
+ export interface IBiasDetector {
19
+ detect(content: Content): Promise<Result<BiasReport, Error>>;
20
+ }
21
+ /** @requirement REQ-ANALYZE-004 */
22
+ export interface IContradictionDetector {
23
+ findContradictions(contents: Content[]): Promise<Result<Contradiction[], Error>>;
24
+ }
25
+ /** @requirement REQ-ANALYZE-005 */
26
+ export interface ITrendAnalyzer {
27
+ analyze(topic: string, timeRange: string): Promise<Result<TrendData, Error>>;
28
+ }
29
+ /** @requirement REQ-ANALYZE-006 */
30
+ export interface ISentimentAnalyzer {
31
+ analyze(content: Content): Promise<Result<SentimentResult, Error>>;
32
+ }
33
+ /** @requirement REQ-ANALYZE-011 */
34
+ export interface IMoAEngine {
35
+ query(prompt: string, providers?: string[]): Promise<Result<MoAResponse, Error>>;
36
+ }
37
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,UAAU,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;CAClF;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;CACnF;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;CAC9D;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAClF;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;CAC9E;AAED,mCAAmC;AACnC,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;CACpE;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;CAClF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Analyzerインターフェース定義
3
+ *
4
+ * @requirement REQ-ANALYZE-001 ~ REQ-ANALYZE-011
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Quality module exports
3
+ */
4
+ export { QualityScorer, } from './quality-scorer.js';
5
+ export type { QualityDimension, QualityScore, QualityReport, } from './quality-scorer.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Quality module exports
3
+ */
4
+ export { QualityScorer, } from './quality-scorer.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,GACd,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * QualityScorer - コンテンツ品質スコアリング
3
+ *
4
+ * @requirement REQ-ANALYZE-011
5
+ * @design DES-KATASHIRO-001 §2.2 Analyzer Container
6
+ * @task TSK-025
7
+ */
8
+ /**
9
+ * 品質次元
10
+ */
11
+ export interface QualityDimension {
12
+ readonly name: string;
13
+ readonly score: number;
14
+ readonly details?: string;
15
+ }
16
+ /**
17
+ * 品質スコア
18
+ */
19
+ export interface QualityScore {
20
+ readonly overall: number;
21
+ readonly dimensions: QualityDimension[];
22
+ }
23
+ /**
24
+ * 品質レポート
25
+ */
26
+ export interface QualityReport {
27
+ readonly score: QualityScore;
28
+ readonly summary: string;
29
+ readonly strengths: string[];
30
+ readonly improvements: string[];
31
+ }
32
+ /**
33
+ * コンテンツ品質スコアリング実装
34
+ */
35
+ export declare class QualityScorer {
36
+ /**
37
+ * コンテンツ品質をスコアリング
38
+ */
39
+ scoreContent(text: string): QualityScore;
40
+ /**
41
+ * 可読性スコア
42
+ */
43
+ scoreReadability(text: string): QualityDimension;
44
+ /**
45
+ * 完全性スコア
46
+ */
47
+ scoreCompleteness(text: string): QualityDimension;
48
+ /**
49
+ * 引用・参照スコア
50
+ */
51
+ scoreCitation(text: string): QualityDimension;
52
+ /**
53
+ * 客観性スコア
54
+ */
55
+ scoreObjectivity(text: string): QualityDimension;
56
+ /**
57
+ * 新鮮さスコア
58
+ */
59
+ scoreFreshness(text: string): QualityDimension;
60
+ /**
61
+ * 品質レポート生成
62
+ */
63
+ getQualityReport(text: string): QualityReport;
64
+ }
65
+ //# sourceMappingURL=quality-scorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-scorer.d.ts","sourceRoot":"","sources":["../../src/quality/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC;AA0BD;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IA6BxC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IA0ChD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAkDjD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IA0C7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAyChD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IA8C9C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CA+B9C"}