@nahisaho/katashiro-analyzer 0.2.2 → 0.2.4

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 (153) hide show
  1. package/dist/factcheck/ClaimParser.d.ts +41 -0
  2. package/dist/factcheck/ClaimParser.d.ts.map +1 -0
  3. package/dist/factcheck/ClaimParser.js +149 -0
  4. package/dist/factcheck/ClaimParser.js.map +1 -0
  5. package/dist/factcheck/ConsistencyChecker.d.ts +56 -0
  6. package/dist/factcheck/ConsistencyChecker.d.ts.map +1 -0
  7. package/dist/factcheck/ConsistencyChecker.js +184 -0
  8. package/dist/factcheck/ConsistencyChecker.js.map +1 -0
  9. package/dist/factcheck/EvidenceCollector.d.ts +89 -0
  10. package/dist/factcheck/EvidenceCollector.d.ts.map +1 -0
  11. package/dist/factcheck/EvidenceCollector.js +222 -0
  12. package/dist/factcheck/EvidenceCollector.js.map +1 -0
  13. package/dist/factcheck/FactChecker.d.ts +81 -0
  14. package/dist/factcheck/FactChecker.d.ts.map +1 -0
  15. package/dist/factcheck/FactChecker.js +302 -0
  16. package/dist/factcheck/FactChecker.js.map +1 -0
  17. package/dist/factcheck/TrustedSourceRegistry.d.ts +47 -0
  18. package/dist/factcheck/TrustedSourceRegistry.d.ts.map +1 -0
  19. package/dist/factcheck/TrustedSourceRegistry.js +208 -0
  20. package/dist/factcheck/TrustedSourceRegistry.js.map +1 -0
  21. package/dist/factcheck/VerdictGenerator.d.ts +36 -0
  22. package/dist/factcheck/VerdictGenerator.d.ts.map +1 -0
  23. package/dist/factcheck/VerdictGenerator.js +154 -0
  24. package/dist/factcheck/VerdictGenerator.js.map +1 -0
  25. package/dist/factcheck/index.d.ts +15 -0
  26. package/dist/factcheck/index.d.ts.map +1 -0
  27. package/dist/factcheck/index.js +14 -0
  28. package/dist/factcheck/index.js.map +1 -0
  29. package/dist/factcheck/types.d.ts +265 -0
  30. package/dist/factcheck/types.d.ts.map +1 -0
  31. package/dist/factcheck/types.js +18 -0
  32. package/dist/factcheck/types.js.map +1 -0
  33. package/dist/index.d.ts +5 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/interpreter/CodeInterpreter.d.ts +119 -0
  38. package/dist/interpreter/CodeInterpreter.d.ts.map +1 -0
  39. package/dist/interpreter/CodeInterpreter.js +241 -0
  40. package/dist/interpreter/CodeInterpreter.js.map +1 -0
  41. package/dist/interpreter/CodeValidator.d.ts +57 -0
  42. package/dist/interpreter/CodeValidator.d.ts.map +1 -0
  43. package/dist/interpreter/CodeValidator.js +283 -0
  44. package/dist/interpreter/CodeValidator.js.map +1 -0
  45. package/dist/interpreter/ExecutionEngine.d.ts +73 -0
  46. package/dist/interpreter/ExecutionEngine.d.ts.map +1 -0
  47. package/dist/interpreter/ExecutionEngine.js +273 -0
  48. package/dist/interpreter/ExecutionEngine.js.map +1 -0
  49. package/dist/interpreter/ResultFormatter.d.ts +72 -0
  50. package/dist/interpreter/ResultFormatter.d.ts.map +1 -0
  51. package/dist/interpreter/ResultFormatter.js +187 -0
  52. package/dist/interpreter/ResultFormatter.js.map +1 -0
  53. package/dist/interpreter/SandboxManager.d.ts +111 -0
  54. package/dist/interpreter/SandboxManager.d.ts.map +1 -0
  55. package/dist/interpreter/SandboxManager.js +215 -0
  56. package/dist/interpreter/SandboxManager.js.map +1 -0
  57. package/dist/interpreter/SessionManager.d.ts +101 -0
  58. package/dist/interpreter/SessionManager.d.ts.map +1 -0
  59. package/dist/interpreter/SessionManager.js +184 -0
  60. package/dist/interpreter/SessionManager.js.map +1 -0
  61. package/dist/interpreter/index.d.ts +13 -0
  62. package/dist/interpreter/index.d.ts.map +1 -0
  63. package/dist/interpreter/index.js +13 -0
  64. package/dist/interpreter/index.js.map +1 -0
  65. package/dist/interpreter/types.d.ts +311 -0
  66. package/dist/interpreter/types.d.ts.map +1 -0
  67. package/dist/interpreter/types.js +91 -0
  68. package/dist/interpreter/types.js.map +1 -0
  69. package/dist/moa/AgentOrchestrator.d.ts +53 -0
  70. package/dist/moa/AgentOrchestrator.d.ts.map +1 -0
  71. package/dist/moa/AgentOrchestrator.js +164 -0
  72. package/dist/moa/AgentOrchestrator.js.map +1 -0
  73. package/dist/moa/ConsensusCalculator.d.ts +76 -0
  74. package/dist/moa/ConsensusCalculator.d.ts.map +1 -0
  75. package/dist/moa/ConsensusCalculator.js +221 -0
  76. package/dist/moa/ConsensusCalculator.js.map +1 -0
  77. package/dist/moa/MoAEngine.d.ts +97 -0
  78. package/dist/moa/MoAEngine.d.ts.map +1 -0
  79. package/dist/moa/MoAEngine.js +303 -0
  80. package/dist/moa/MoAEngine.js.map +1 -0
  81. package/dist/moa/ResponseAggregator.d.ts +65 -0
  82. package/dist/moa/ResponseAggregator.d.ts.map +1 -0
  83. package/dist/moa/ResponseAggregator.js +274 -0
  84. package/dist/moa/ResponseAggregator.js.map +1 -0
  85. package/dist/moa/TaskAnalyzer.d.ts +30 -0
  86. package/dist/moa/TaskAnalyzer.d.ts.map +1 -0
  87. package/dist/moa/TaskAnalyzer.js +116 -0
  88. package/dist/moa/TaskAnalyzer.js.map +1 -0
  89. package/dist/moa/index.d.ts +19 -0
  90. package/dist/moa/index.d.ts.map +1 -0
  91. package/dist/moa/index.js +18 -0
  92. package/dist/moa/index.js.map +1 -0
  93. package/dist/moa/types.d.ts +261 -0
  94. package/dist/moa/types.d.ts.map +1 -0
  95. package/dist/moa/types.js +70 -0
  96. package/dist/moa/types.js.map +1 -0
  97. package/dist/research/ConvergenceDetector.d.ts +37 -0
  98. package/dist/research/ConvergenceDetector.d.ts.map +1 -0
  99. package/dist/research/ConvergenceDetector.js +62 -0
  100. package/dist/research/ConvergenceDetector.js.map +1 -0
  101. package/dist/research/DeepResearchOrchestrator.d.ts +63 -0
  102. package/dist/research/DeepResearchOrchestrator.d.ts.map +1 -0
  103. package/dist/research/DeepResearchOrchestrator.js +283 -0
  104. package/dist/research/DeepResearchOrchestrator.js.map +1 -0
  105. package/dist/research/FindingIntegrator.d.ts +42 -0
  106. package/dist/research/FindingIntegrator.d.ts.map +1 -0
  107. package/dist/research/FindingIntegrator.js +239 -0
  108. package/dist/research/FindingIntegrator.js.map +1 -0
  109. package/dist/research/GapAnalyzer.d.ts +41 -0
  110. package/dist/research/GapAnalyzer.d.ts.map +1 -0
  111. package/dist/research/GapAnalyzer.js +145 -0
  112. package/dist/research/GapAnalyzer.js.map +1 -0
  113. package/dist/research/QueryGenerator.d.ts +38 -0
  114. package/dist/research/QueryGenerator.d.ts.map +1 -0
  115. package/dist/research/QueryGenerator.js +79 -0
  116. package/dist/research/QueryGenerator.js.map +1 -0
  117. package/dist/research/index.d.ts +14 -0
  118. package/dist/research/index.d.ts.map +1 -0
  119. package/dist/research/index.js +13 -0
  120. package/dist/research/index.js.map +1 -0
  121. package/dist/research/types.d.ts +215 -0
  122. package/dist/research/types.d.ts.map +1 -0
  123. package/dist/research/types.js +18 -0
  124. package/dist/research/types.js.map +1 -0
  125. package/dist/trend/ForecastEngine.d.ts +65 -0
  126. package/dist/trend/ForecastEngine.d.ts.map +1 -0
  127. package/dist/trend/ForecastEngine.js +260 -0
  128. package/dist/trend/ForecastEngine.js.map +1 -0
  129. package/dist/trend/TimeSeriesCollector.d.ts +42 -0
  130. package/dist/trend/TimeSeriesCollector.d.ts.map +1 -0
  131. package/dist/trend/TimeSeriesCollector.js +172 -0
  132. package/dist/trend/TimeSeriesCollector.js.map +1 -0
  133. package/dist/trend/TrendAnalyzer.d.ts +72 -0
  134. package/dist/trend/TrendAnalyzer.d.ts.map +1 -0
  135. package/dist/trend/TrendAnalyzer.js +291 -0
  136. package/dist/trend/TrendAnalyzer.js.map +1 -0
  137. package/dist/trend/TrendDetector.d.ts +67 -0
  138. package/dist/trend/TrendDetector.d.ts.map +1 -0
  139. package/dist/trend/TrendDetector.js +325 -0
  140. package/dist/trend/TrendDetector.js.map +1 -0
  141. package/dist/trend/VisualizationGenerator.d.ts +75 -0
  142. package/dist/trend/VisualizationGenerator.d.ts.map +1 -0
  143. package/dist/trend/VisualizationGenerator.js +294 -0
  144. package/dist/trend/VisualizationGenerator.js.map +1 -0
  145. package/dist/trend/index.d.ts +16 -0
  146. package/dist/trend/index.d.ts.map +1 -0
  147. package/dist/trend/index.js +18 -0
  148. package/dist/trend/index.js.map +1 -0
  149. package/dist/trend/types.d.ts +279 -0
  150. package/dist/trend/types.d.ts.map +1 -0
  151. package/dist/trend/types.js +17 -0
  152. package/dist/trend/types.js.map +1 -0
  153. package/package.json +4 -2
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ClaimParser - 主張の解析・正規化
3
+ *
4
+ * @requirement REQ-ANALYZE-006
5
+ * @design DES-ANALYZE-006-FactChecker
6
+ */
7
+ import type { ExtractedClaim } from './types.js';
8
+ /**
9
+ * 主張を解析し、検証可能な形式に変換
10
+ */
11
+ export declare class ClaimParser {
12
+ /**
13
+ * テキストから主張を抽出
14
+ */
15
+ parse(text: string): ExtractedClaim[];
16
+ /**
17
+ * 単一の主張を解析
18
+ */
19
+ parseSingle(claim: string): ExtractedClaim;
20
+ /**
21
+ * 主張を正規化
22
+ */
23
+ normalize(claim: string): string;
24
+ /**
25
+ * 文を分割
26
+ */
27
+ private splitSentences;
28
+ /**
29
+ * 主張の種類を判定
30
+ */
31
+ private determineClaimType;
32
+ /**
33
+ * 検証可能性を評価
34
+ */
35
+ private assessVerifiability;
36
+ /**
37
+ * エンティティを抽出(簡易版)
38
+ */
39
+ private extractEntities;
40
+ }
41
+ //# sourceMappingURL=ClaimParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimParser.d.ts","sourceRoot":"","sources":["../../src/factcheck/ClaimParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE;IA0BrC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAe1C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkBhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * ClaimParser - 主張の解析・正規化
3
+ *
4
+ * @requirement REQ-ANALYZE-006
5
+ * @design DES-ANALYZE-006-FactChecker
6
+ */
7
+ /**
8
+ * 主張を解析し、検証可能な形式に変換
9
+ */
10
+ export class ClaimParser {
11
+ /**
12
+ * テキストから主張を抽出
13
+ */
14
+ parse(text) {
15
+ const sentences = this.splitSentences(text);
16
+ const claims = [];
17
+ for (const sentence of sentences) {
18
+ const trimmed = sentence.trim();
19
+ if (trimmed.length < 10)
20
+ continue;
21
+ const type = this.determineClaimType(trimmed);
22
+ const verifiability = this.assessVerifiability(trimmed, type);
23
+ if (verifiability !== 'low') {
24
+ claims.push({
25
+ original: trimmed,
26
+ normalized: this.normalize(trimmed),
27
+ entities: this.extractEntities(trimmed),
28
+ type,
29
+ verifiability,
30
+ context: undefined,
31
+ });
32
+ }
33
+ }
34
+ return claims;
35
+ }
36
+ /**
37
+ * 単一の主張を解析
38
+ */
39
+ parseSingle(claim) {
40
+ const trimmed = claim.trim();
41
+ const type = this.determineClaimType(trimmed);
42
+ const verifiability = this.assessVerifiability(trimmed, type);
43
+ return {
44
+ original: trimmed,
45
+ normalized: this.normalize(trimmed),
46
+ entities: this.extractEntities(trimmed),
47
+ type,
48
+ verifiability,
49
+ context: undefined,
50
+ };
51
+ }
52
+ /**
53
+ * 主張を正規化
54
+ */
55
+ normalize(claim) {
56
+ let normalized = claim.trim();
57
+ // 引用符の正規化
58
+ normalized = normalized.replace(/[""]/g, '"');
59
+ normalized = normalized.replace(/['']/g, "'");
60
+ // 余分な空白の削除
61
+ normalized = normalized.replace(/\s+/g, ' ');
62
+ // 文末のピリオド追加
63
+ if (!/[.!?]$/.test(normalized)) {
64
+ normalized += '.';
65
+ }
66
+ return normalized;
67
+ }
68
+ /**
69
+ * 文を分割
70
+ */
71
+ splitSentences(text) {
72
+ // 簡易的な文分割
73
+ const sentences = text.split(/(?<=[.!?])\s+/);
74
+ return sentences.filter(s => s.trim().length > 0);
75
+ }
76
+ /**
77
+ * 主張の種類を判定
78
+ */
79
+ determineClaimType(claim) {
80
+ const lowerClaim = claim.toLowerCase();
81
+ // 統計に関する主張
82
+ if (/\d+%|percent|percentage|rate|ratio|\d+ out of \d+/i.test(claim)) {
83
+ return 'statistical';
84
+ }
85
+ // 引用
86
+ if (/[""].*[""]|said\s+that|according to.*,/i.test(claim)) {
87
+ return 'quote';
88
+ }
89
+ // 予測
90
+ if (/will\s+\w+|going\s+to|predict|forecast|expect|next\s+year|next\s+month|by\s+\d{4}/i.test(lowerClaim)) {
91
+ return 'prediction';
92
+ }
93
+ // 意見を示す表現
94
+ if (/i\s+think|i\s+believe|in\s+my\s+opinion|should|ought\s+to|best|worst/i.test(lowerClaim)) {
95
+ return 'opinion';
96
+ }
97
+ // それ以外は事実主張
98
+ return 'factual';
99
+ }
100
+ /**
101
+ * 検証可能性を評価
102
+ */
103
+ assessVerifiability(claim, type) {
104
+ // 意見は検証困難
105
+ if (type === 'opinion') {
106
+ return 'low';
107
+ }
108
+ // 予測は将来のことなので検証困難
109
+ if (type === 'prediction') {
110
+ return 'low';
111
+ }
112
+ // 具体的な数値や日付がある場合は検証しやすい
113
+ if (/\d{4}|\d+%|[0-9]+\s*(million|billion|thousand)/i.test(claim)) {
114
+ return 'high';
115
+ }
116
+ // 固有名詞が含まれる場合は中程度
117
+ if (/[A-Z][a-z]+\s+[A-Z][a-z]+|Dr\.|President|CEO/i.test(claim)) {
118
+ return 'high';
119
+ }
120
+ // 引用は出典確認が可能
121
+ if (type === 'quote') {
122
+ return 'medium';
123
+ }
124
+ return 'medium';
125
+ }
126
+ /**
127
+ * エンティティを抽出(簡易版)
128
+ */
129
+ extractEntities(claim) {
130
+ const entities = [];
131
+ // 大文字で始まる固有名詞を抽出(簡易的)
132
+ const properNouns = claim.match(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*/g);
133
+ if (properNouns) {
134
+ entities.push(...properNouns);
135
+ }
136
+ // 数値を含む表現を抽出
137
+ const numbers = claim.match(/\d+(?:\.\d+)?(?:\s*%|%|\s+(?:million|billion|thousand|percent))?/gi);
138
+ if (numbers) {
139
+ entities.push(...numbers);
140
+ }
141
+ // 年を抽出
142
+ const years = claim.match(/\b(?:19|20)\d{2}\b/g);
143
+ if (years) {
144
+ entities.push(...years);
145
+ }
146
+ return [...new Set(entities)];
147
+ }
148
+ }
149
+ //# sourceMappingURL=ClaimParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimParser.js","sourceRoot":"","sources":["../../src/factcheck/ClaimParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ConsistencyChecker - エビデンスの一貫性チェック
3
+ *
4
+ * @requirement REQ-ANALYZE-006
5
+ * @design DES-ANALYZE-006-FactChecker
6
+ */
7
+ import type { Evidence, ExtractedClaim, ClaimVerification } from './types.js';
8
+ /**
9
+ * 一貫性チェックの結果
10
+ */
11
+ export interface ConsistencyResult {
12
+ /** 一貫性スコア (0-1) */
13
+ score: number;
14
+ /** 支持するエビデンス数 */
15
+ supportingCount: number;
16
+ /** 矛盾するエビデンス数 */
17
+ contradictingCount: number;
18
+ /** 主な矛盾点 */
19
+ contradictions: string[];
20
+ /** 分析メモ */
21
+ notes: string[];
22
+ }
23
+ /**
24
+ * エビデンス間の一貫性をチェックするクラス
25
+ */
26
+ export declare class ConsistencyChecker {
27
+ /**
28
+ * エビデンスの一貫性をチェック
29
+ */
30
+ check(_claim: ExtractedClaim, evidence: Evidence[]): ConsistencyResult;
31
+ /**
32
+ * 主張の検証結果を生成
33
+ */
34
+ verify(claim: ExtractedClaim, evidence: Evidence[]): ClaimVerification;
35
+ /**
36
+ * 複数のエビデンス間の相互一貫性をチェック
37
+ */
38
+ checkMutualConsistency(evidence: Evidence[]): number;
39
+ /**
40
+ * 2つのエビデンスが一貫しているかチェック
41
+ */
42
+ private areConsistent;
43
+ /**
44
+ * 一貫性スコアを計算
45
+ */
46
+ private calculateConsistencyScore;
47
+ /**
48
+ * 矛盾点を特定
49
+ */
50
+ private identifyContradictions;
51
+ /**
52
+ * 分析メモを生成
53
+ */
54
+ private generateNotes;
55
+ }
56
+ //# sourceMappingURL=ConsistencyChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsistencyChecker.d.ts","sourceRoot":"","sources":["../../src/factcheck/ConsistencyChecker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY;IACZ,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,iBAAiB;IA2CtE;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,iBAAiB;IA4BtE;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM;IAoBpD;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsCjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,aAAa;CAqCtB"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * ConsistencyChecker - エビデンスの一貫性チェック
3
+ *
4
+ * @requirement REQ-ANALYZE-006
5
+ * @design DES-ANALYZE-006-FactChecker
6
+ */
7
+ /**
8
+ * エビデンス間の一貫性をチェックするクラス
9
+ */
10
+ export class ConsistencyChecker {
11
+ /**
12
+ * エビデンスの一貫性をチェック
13
+ */
14
+ check(_claim, evidence) {
15
+ if (evidence.length === 0) {
16
+ return {
17
+ score: 0,
18
+ supportingCount: 0,
19
+ contradictingCount: 0,
20
+ contradictions: [],
21
+ notes: ['No evidence available for consistency check'],
22
+ };
23
+ }
24
+ // エビデンスを関係性で分類
25
+ const supporting = evidence.filter(e => e.relation === 'supports' || e.relation === 'partially_supports');
26
+ const contradicting = evidence.filter(e => e.relation === 'contradicts');
27
+ const neutral = evidence.filter(e => e.relation === 'neutral' || e.relation === 'context');
28
+ // 一貫性スコアを計算
29
+ const score = this.calculateConsistencyScore(supporting.length, contradicting.length, neutral.length, evidence);
30
+ // 矛盾点を特定
31
+ const contradictions = this.identifyContradictions(supporting, contradicting);
32
+ // 分析メモを生成
33
+ const notes = this.generateNotes(supporting, contradicting, neutral, score);
34
+ return {
35
+ score,
36
+ supportingCount: supporting.length,
37
+ contradictingCount: contradicting.length,
38
+ contradictions,
39
+ notes,
40
+ };
41
+ }
42
+ /**
43
+ * 主張の検証結果を生成
44
+ */
45
+ verify(claim, evidence) {
46
+ const consistency = this.check(claim, evidence);
47
+ // 検証結果を判定
48
+ let verified;
49
+ if (evidence.length === 0) {
50
+ verified = null;
51
+ }
52
+ else if (consistency.supportingCount > 0 && consistency.contradictingCount === 0) {
53
+ verified = true;
54
+ }
55
+ else if (consistency.contradictingCount > 0 && consistency.supportingCount === 0) {
56
+ verified = false;
57
+ }
58
+ else if (consistency.score > 0.7) {
59
+ verified = true;
60
+ }
61
+ else if (consistency.score < 0.3) {
62
+ verified = false;
63
+ }
64
+ else {
65
+ verified = null;
66
+ }
67
+ return {
68
+ claim,
69
+ verified,
70
+ evidence,
71
+ notes: consistency.notes,
72
+ };
73
+ }
74
+ /**
75
+ * 複数のエビデンス間の相互一貫性をチェック
76
+ */
77
+ checkMutualConsistency(evidence) {
78
+ if (evidence.length < 2) {
79
+ return 1.0;
80
+ }
81
+ let consistentPairs = 0;
82
+ let totalPairs = 0;
83
+ for (let i = 0; i < evidence.length; i++) {
84
+ for (let j = i + 1; j < evidence.length; j++) {
85
+ totalPairs++;
86
+ if (this.areConsistent(evidence[i], evidence[j])) {
87
+ consistentPairs++;
88
+ }
89
+ }
90
+ }
91
+ return totalPairs > 0 ? consistentPairs / totalPairs : 1.0;
92
+ }
93
+ /**
94
+ * 2つのエビデンスが一貫しているかチェック
95
+ */
96
+ areConsistent(e1, e2) {
97
+ // 両方が支持または両方が矛盾なら一貫
98
+ if (e1.relation === e2.relation) {
99
+ return true;
100
+ }
101
+ // 一方が支持、他方が矛盾なら非一貫
102
+ const supportRelations = ['supports', 'partially_supports'];
103
+ const isE1Supporting = supportRelations.includes(e1.relation);
104
+ const isE2Supporting = supportRelations.includes(e2.relation);
105
+ const isE1Contradicting = e1.relation === 'contradicts';
106
+ const isE2Contradicting = e2.relation === 'contradicts';
107
+ if ((isE1Supporting && isE2Contradicting) || (isE1Contradicting && isE2Supporting)) {
108
+ return false;
109
+ }
110
+ // それ以外は一貫とみなす
111
+ return true;
112
+ }
113
+ /**
114
+ * 一貫性スコアを計算
115
+ */
116
+ calculateConsistencyScore(supporting, contradicting, neutral, evidence) {
117
+ const total = supporting + contradicting + neutral;
118
+ if (total === 0) {
119
+ return 0;
120
+ }
121
+ // 基本スコア: 支持エビデンスの割合
122
+ let score = supporting / total;
123
+ // 矛盾があればペナルティ
124
+ if (contradicting > 0) {
125
+ const contradictionPenalty = Math.min(0.3, contradicting * 0.1);
126
+ score = score - contradictionPenalty;
127
+ }
128
+ // 信頼性の高いソースからの支持にボーナス
129
+ const highCredibilitySupporting = evidence.filter(e => (e.relation === 'supports' || e.relation === 'partially_supports') &&
130
+ e.credibilityScore > 0.8).length;
131
+ if (highCredibilitySupporting > 0) {
132
+ score = Math.min(1.0, score + highCredibilitySupporting * 0.05);
133
+ }
134
+ // 相互一貫性をチェック
135
+ const mutualConsistency = this.checkMutualConsistency(evidence);
136
+ score = score * 0.7 + mutualConsistency * 0.3;
137
+ return Math.max(0, Math.min(1, score));
138
+ }
139
+ /**
140
+ * 矛盾点を特定
141
+ */
142
+ identifyContradictions(supporting, contradicting) {
143
+ const contradictions = [];
144
+ if (supporting.length > 0 && contradicting.length > 0) {
145
+ // 支持と矛盾が混在している場合
146
+ for (const contra of contradicting) {
147
+ for (const support of supporting) {
148
+ contradictions.push(`"${support.sourceName}" supports the claim, but "${contra.sourceName}" contradicts it.`);
149
+ }
150
+ }
151
+ }
152
+ // 重複を除去して返す
153
+ return [...new Set(contradictions)].slice(0, 5);
154
+ }
155
+ /**
156
+ * 分析メモを生成
157
+ */
158
+ generateNotes(supporting, contradicting, neutral, score) {
159
+ const notes = [];
160
+ // エビデンスの分布
161
+ notes.push(`Evidence distribution: ${supporting.length} supporting, ` +
162
+ `${contradicting.length} contradicting, ${neutral.length} neutral`);
163
+ // 一貫性評価
164
+ if (score > 0.8) {
165
+ notes.push('High consistency across sources');
166
+ }
167
+ else if (score > 0.5) {
168
+ notes.push('Moderate consistency with some variations');
169
+ }
170
+ else if (score > 0.3) {
171
+ notes.push('Mixed evidence with notable contradictions');
172
+ }
173
+ else {
174
+ notes.push('Low consistency - significant contradictions found');
175
+ }
176
+ // 高信頼性ソースからの情報
177
+ const highCredibility = [...supporting, ...contradicting].filter(e => e.credibilityScore > 0.8);
178
+ if (highCredibility.length > 0) {
179
+ notes.push(`${highCredibility.length} high-credibility source(s) referenced`);
180
+ }
181
+ return notes;
182
+ }
183
+ }
184
+ //# sourceMappingURL=ConsistencyChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsistencyChecker.js","sourceRoot":"","sources":["../../src/factcheck/ConsistencyChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * EvidenceCollector - エビデンスの収集
3
+ *
4
+ * @requirement REQ-ANALYZE-006
5
+ * @design DES-ANALYZE-006-FactChecker
6
+ */
7
+ import type { Evidence, ExtractedClaim, VerificationSourceType, ExistingFactCheck } from './types.js';
8
+ import { TrustedSourceRegistry } from './TrustedSourceRegistry.js';
9
+ /**
10
+ * Web検索クライアントのインターフェース
11
+ */
12
+ export interface SearchClient {
13
+ search(query: string, options?: {
14
+ maxResults?: number;
15
+ }): Promise<SearchResultItem[]>;
16
+ }
17
+ /**
18
+ * Webスクレイパーのインターフェース
19
+ */
20
+ export interface Scraper {
21
+ scrape(url: string): Promise<ScrapedPage>;
22
+ }
23
+ /**
24
+ * 検索結果アイテム
25
+ */
26
+ export interface SearchResultItem {
27
+ title: string;
28
+ url: string;
29
+ snippet?: string;
30
+ }
31
+ /**
32
+ * スクレイピング結果
33
+ */
34
+ export interface ScrapedPage {
35
+ url: string;
36
+ title: string;
37
+ content: string;
38
+ publishedDate?: Date;
39
+ }
40
+ /**
41
+ * エビデンスコレクターの設定
42
+ */
43
+ export interface EvidenceCollectorConfig {
44
+ maxResultsPerSource: number;
45
+ timeoutMs: number;
46
+ }
47
+ /**
48
+ * エビデンスを収集するクラス
49
+ */
50
+ export declare class EvidenceCollector {
51
+ private registry;
52
+ private searchClient?;
53
+ private scraper?;
54
+ private config;
55
+ constructor(registry: TrustedSourceRegistry, searchClient?: SearchClient, scraper?: Scraper, config?: Partial<EvidenceCollectorConfig>);
56
+ /**
57
+ * 主張に関連するエビデンスを収集
58
+ */
59
+ collect(claim: ExtractedClaim, sourceTypes?: VerificationSourceType[]): Promise<Evidence[]>;
60
+ /**
61
+ * クイックチェック用のエビデンス収集(少数)
62
+ */
63
+ collectQuick(claim: ExtractedClaim, maxSources?: number): Promise<Evidence[]>;
64
+ /**
65
+ * 既存のファクトチェック結果を検索
66
+ */
67
+ findExistingFactChecks(claim: ExtractedClaim): Promise<ExistingFactCheck[]>;
68
+ /**
69
+ * 検索クエリを構築
70
+ */
71
+ private buildSearchQuery;
72
+ /**
73
+ * URLからドメインを抽出
74
+ */
75
+ private extractDomain;
76
+ /**
77
+ * コンテンツと主張の関係を判定
78
+ */
79
+ private determineRelation;
80
+ /**
81
+ * 関連する抜粋を抽出
82
+ */
83
+ private extractRelevantExcerpt;
84
+ /**
85
+ * ダミーのエビデンスを生成(テスト用)
86
+ */
87
+ private generateDummyEvidence;
88
+ }
89
+ //# sourceMappingURL=EvidenceCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvidenceCollector.d.ts","sourceRoot":"","sources":["../../src/factcheck/EvidenceCollector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACvF;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,MAAM,CAA0B;gBAGtC,QAAQ,EAAE,qBAAqB,EAC/B,YAAY,CAAC,EAAE,YAAY,EAC3B,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAW3C;;OAEG;IACG,OAAO,CACX,KAAK,EAAE,cAAc,EACrB,WAAW,GAAE,sBAAsB,EAAkD,GACpF,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmDtB;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,cAAc,EACrB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoBtB;;OAEG;IACG,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoCjF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAe9B"}