@nahisaho/katashiro-orchestrator 1.0.1 → 1.3.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.
- package/dist/consensus/AsciiDiagramConverter.d.ts +45 -0
- package/dist/consensus/AsciiDiagramConverter.d.ts.map +1 -0
- package/dist/consensus/AsciiDiagramConverter.js +460 -0
- package/dist/consensus/AsciiDiagramConverter.js.map +1 -0
- package/dist/consensus/ConsensusResearchEngine.d.ts +84 -0
- package/dist/consensus/ConsensusResearchEngine.d.ts.map +1 -0
- package/dist/consensus/ConsensusResearchEngine.js +409 -0
- package/dist/consensus/ConsensusResearchEngine.js.map +1 -0
- package/dist/consensus/ConsensusSelector.d.ts +63 -0
- package/dist/consensus/ConsensusSelector.d.ts.map +1 -0
- package/dist/consensus/ConsensusSelector.js +124 -0
- package/dist/consensus/ConsensusSelector.js.map +1 -0
- package/dist/consensus/ReportPostProcessor.d.ts +51 -0
- package/dist/consensus/ReportPostProcessor.d.ts.map +1 -0
- package/dist/consensus/ReportPostProcessor.js +162 -0
- package/dist/consensus/ReportPostProcessor.js.map +1 -0
- package/dist/consensus/ReportScorer.d.ts +81 -0
- package/dist/consensus/ReportScorer.d.ts.map +1 -0
- package/dist/consensus/ReportScorer.js +292 -0
- package/dist/consensus/ReportScorer.js.map +1 -0
- package/dist/consensus/ResearchAgent.d.ts +137 -0
- package/dist/consensus/ResearchAgent.d.ts.map +1 -0
- package/dist/consensus/ResearchAgent.js +319 -0
- package/dist/consensus/ResearchAgent.js.map +1 -0
- package/dist/consensus/index.d.ts +22 -0
- package/dist/consensus/index.d.ts.map +1 -0
- package/dist/consensus/index.js +42 -0
- package/dist/consensus/index.js.map +1 -0
- package/dist/consensus/types.d.ts +409 -0
- package/dist/consensus/types.d.ts.map +1 -0
- package/dist/consensus/types.js +98 -0
- package/dist/consensus/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KATASHIRO v1.3.0 - ReportPostProcessor
|
|
3
|
+
* レポート後処理(ASCII図変換)を担当
|
|
4
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
5
|
+
* @version 1.3.0
|
|
6
|
+
*/
|
|
7
|
+
import type { PostProcessorOptions, PostProcessResult, AsciiDiagram } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* レポート後処理クラス
|
|
10
|
+
* @requirement REQ-1.3.0-VIS-002
|
|
11
|
+
*/
|
|
12
|
+
export declare class ReportPostProcessor {
|
|
13
|
+
private readonly options;
|
|
14
|
+
private readonly converter;
|
|
15
|
+
/**
|
|
16
|
+
* コンストラクタ
|
|
17
|
+
* @param options 後処理オプション
|
|
18
|
+
*/
|
|
19
|
+
constructor(options?: Partial<PostProcessorOptions>);
|
|
20
|
+
/**
|
|
21
|
+
* レポートを後処理
|
|
22
|
+
* @param report 入力レポート
|
|
23
|
+
* @returns 後処理結果
|
|
24
|
+
*/
|
|
25
|
+
process(report: string): PostProcessResult;
|
|
26
|
+
/**
|
|
27
|
+
* ASCII図を検出
|
|
28
|
+
* @param text 入力テキスト
|
|
29
|
+
* @returns 検出されたASCII図配列
|
|
30
|
+
*/
|
|
31
|
+
detectAsciiDiagrams(text: string): AsciiDiagram[];
|
|
32
|
+
/**
|
|
33
|
+
* ASCII図をMermaidに変換
|
|
34
|
+
* @param diagram ASCII図
|
|
35
|
+
* @returns Mermaid形式の文字列
|
|
36
|
+
*/
|
|
37
|
+
convertToMermaid(diagram: AsciiDiagram): string;
|
|
38
|
+
/**
|
|
39
|
+
* ASCII図をMarkdownに変換
|
|
40
|
+
* @param diagram ASCII図
|
|
41
|
+
* @returns Markdown形式の文字列
|
|
42
|
+
*/
|
|
43
|
+
convertToMarkdownTable(diagram: AsciiDiagram): string;
|
|
44
|
+
/**
|
|
45
|
+
* 単一のASCII図を変換
|
|
46
|
+
* @param diagram ASCII図
|
|
47
|
+
* @returns 変換記録
|
|
48
|
+
*/
|
|
49
|
+
private convertDiagram;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ReportPostProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPostProcessor.d.ts","sourceRoot":"","sources":["../../src/consensus/ReportPostProcessor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EAEjB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD;;;OAGG;gBACS,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAKnD;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAyE1C;;;;OAIG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAIjD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAI/C;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAIrD;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAuCvB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* KATASHIRO v1.3.0 - ReportPostProcessor
|
|
4
|
+
* レポート後処理(ASCII図変換)を担当
|
|
5
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
6
|
+
* @version 1.3.0
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ReportPostProcessor = void 0;
|
|
10
|
+
const types_1 = require("./types");
|
|
11
|
+
const AsciiDiagramConverter_1 = require("./AsciiDiagramConverter");
|
|
12
|
+
/**
|
|
13
|
+
* レポート後処理クラス
|
|
14
|
+
* @requirement REQ-1.3.0-VIS-002
|
|
15
|
+
*/
|
|
16
|
+
class ReportPostProcessor {
|
|
17
|
+
options;
|
|
18
|
+
converter;
|
|
19
|
+
/**
|
|
20
|
+
* コンストラクタ
|
|
21
|
+
* @param options 後処理オプション
|
|
22
|
+
*/
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.options = { ...types_1.DEFAULT_POST_PROCESSOR_OPTIONS, ...options };
|
|
25
|
+
this.converter = new AsciiDiagramConverter_1.AsciiDiagramConverter();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* レポートを後処理
|
|
29
|
+
* @param report 入力レポート
|
|
30
|
+
* @returns 後処理結果
|
|
31
|
+
*/
|
|
32
|
+
process(report) {
|
|
33
|
+
const startTime = Date.now();
|
|
34
|
+
const conversions = [];
|
|
35
|
+
const warnings = [];
|
|
36
|
+
// 後処理が無効な場合はそのまま返す
|
|
37
|
+
if (!this.options.enabled) {
|
|
38
|
+
return {
|
|
39
|
+
processedReport: report,
|
|
40
|
+
conversions: [],
|
|
41
|
+
warnings: [],
|
|
42
|
+
processingTimeMs: Date.now() - startTime,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// ASCII図を検出
|
|
46
|
+
const diagrams = this.converter.detect(report);
|
|
47
|
+
if (diagrams.length === 0) {
|
|
48
|
+
return {
|
|
49
|
+
processedReport: report,
|
|
50
|
+
conversions: [],
|
|
51
|
+
warnings: [],
|
|
52
|
+
processingTimeMs: Date.now() - startTime,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// 変換処理(後ろから置換して位置ずれを防ぐ)
|
|
56
|
+
let processedReport = report;
|
|
57
|
+
const sortedDiagrams = [...diagrams].sort((a, b) => b.startIndex - a.startIndex);
|
|
58
|
+
for (const diagram of sortedDiagrams) {
|
|
59
|
+
const record = this.convertDiagram(diagram);
|
|
60
|
+
conversions.unshift(record); // 順番を元に戻す
|
|
61
|
+
if (record.success) {
|
|
62
|
+
// 変換成功: 置換
|
|
63
|
+
const before = processedReport.slice(0, diagram.startIndex);
|
|
64
|
+
const after = processedReport.slice(diagram.endIndex);
|
|
65
|
+
if (this.options.preserveOriginal) {
|
|
66
|
+
// 元の図も保持
|
|
67
|
+
processedReport =
|
|
68
|
+
before +
|
|
69
|
+
`<!-- Original ASCII diagram preserved -->\n` +
|
|
70
|
+
`\`\`\`\n${diagram.original}\n\`\`\`\n\n` +
|
|
71
|
+
record.converted +
|
|
72
|
+
after;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
processedReport = before + record.converted + after;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// 変換失敗
|
|
80
|
+
warnings.push(`Line ${diagram.lineNumber}: Failed to convert ${diagram.type} diagram - ${record.errorMessage}`);
|
|
81
|
+
if (this.options.strictMode) {
|
|
82
|
+
throw new Error(`Failed to convert ${diagram.type} diagram at line ${diagram.lineNumber}: ${record.errorMessage}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
processedReport,
|
|
88
|
+
conversions,
|
|
89
|
+
warnings,
|
|
90
|
+
processingTimeMs: Date.now() - startTime,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* ASCII図を検出
|
|
95
|
+
* @param text 入力テキスト
|
|
96
|
+
* @returns 検出されたASCII図配列
|
|
97
|
+
*/
|
|
98
|
+
detectAsciiDiagrams(text) {
|
|
99
|
+
return this.converter.detect(text);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* ASCII図をMermaidに変換
|
|
103
|
+
* @param diagram ASCII図
|
|
104
|
+
* @returns Mermaid形式の文字列
|
|
105
|
+
*/
|
|
106
|
+
convertToMermaid(diagram) {
|
|
107
|
+
return this.converter.convertToMermaid(diagram);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* ASCII図をMarkdownに変換
|
|
111
|
+
* @param diagram ASCII図
|
|
112
|
+
* @returns Markdown形式の文字列
|
|
113
|
+
*/
|
|
114
|
+
convertToMarkdownTable(diagram) {
|
|
115
|
+
return this.converter.convertToMarkdown(diagram);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 単一のASCII図を変換
|
|
119
|
+
* @param diagram ASCII図
|
|
120
|
+
* @returns 変換記録
|
|
121
|
+
*/
|
|
122
|
+
convertDiagram(diagram) {
|
|
123
|
+
try {
|
|
124
|
+
let converted;
|
|
125
|
+
if (this.options.preferMermaid) {
|
|
126
|
+
// Mermaid優先
|
|
127
|
+
converted = this.converter.convertToMermaid(diagram);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Markdown優先
|
|
131
|
+
converted = this.converter.convertToMarkdown(diagram);
|
|
132
|
+
}
|
|
133
|
+
// 変換結果が元と同じ場合は失敗とみなす
|
|
134
|
+
if (converted === diagram.original) {
|
|
135
|
+
return {
|
|
136
|
+
original: diagram.original,
|
|
137
|
+
converted: diagram.original,
|
|
138
|
+
type: diagram.type,
|
|
139
|
+
success: false,
|
|
140
|
+
errorMessage: 'Conversion produced no changes',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
original: diagram.original,
|
|
145
|
+
converted,
|
|
146
|
+
type: diagram.type,
|
|
147
|
+
success: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return {
|
|
152
|
+
original: diagram.original,
|
|
153
|
+
converted: diagram.original,
|
|
154
|
+
type: diagram.type,
|
|
155
|
+
success: false,
|
|
156
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.ReportPostProcessor = ReportPostProcessor;
|
|
162
|
+
//# sourceMappingURL=ReportPostProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPostProcessor.js","sourceRoot":"","sources":["../../src/consensus/ReportPostProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KATASHIRO v1.2.0 - ReportScorer
|
|
3
|
+
* レポートのスコアリングと矛盾検出を担当
|
|
4
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
5
|
+
* @version 1.2.0
|
|
6
|
+
*/
|
|
7
|
+
import { AgentReport, ReportScore, ConflictDetail, ScoringWeights } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* レポートスコアラー
|
|
10
|
+
* @requirement REQ-1.2.0-WFL-002
|
|
11
|
+
*/
|
|
12
|
+
export declare class ReportScorer {
|
|
13
|
+
private readonly conflictThreshold;
|
|
14
|
+
private readonly weights;
|
|
15
|
+
/**
|
|
16
|
+
* コンストラクタ
|
|
17
|
+
* @param conflictThreshold 矛盾許容閾値(デフォルト: 0.1)
|
|
18
|
+
* @param weights スコアリング重み
|
|
19
|
+
*/
|
|
20
|
+
constructor(conflictThreshold?: number, weights?: ScoringWeights);
|
|
21
|
+
/**
|
|
22
|
+
* 複数レポートをスコアリング
|
|
23
|
+
* @param reports エージェントレポート配列
|
|
24
|
+
* @returns スコア配列
|
|
25
|
+
*/
|
|
26
|
+
scoreReports(reports: AgentReport[]): ReportScore[];
|
|
27
|
+
/**
|
|
28
|
+
* 単一レポートをスコアリング
|
|
29
|
+
* @requirement REQ-1.2.0-WFL-002
|
|
30
|
+
* @param report 対象レポート
|
|
31
|
+
* @param allReports 全レポート(矛盾検出用)
|
|
32
|
+
* @returns スコア
|
|
33
|
+
*/
|
|
34
|
+
scoreReport(report: AgentReport, allReports: AgentReport[]): ReportScore;
|
|
35
|
+
/**
|
|
36
|
+
* 矛盾を検出
|
|
37
|
+
* @param report 対象レポート
|
|
38
|
+
* @param otherReports 他のレポート
|
|
39
|
+
* @returns 矛盾詳細配列
|
|
40
|
+
*/
|
|
41
|
+
detectConflicts(report: AgentReport, otherReports: AgentReport[]): ConflictDetail[];
|
|
42
|
+
/**
|
|
43
|
+
* 一貫性スコアを計算
|
|
44
|
+
* 矛盾の数と深刻度に基づいて減点
|
|
45
|
+
*/
|
|
46
|
+
private calculateConsistencyScore;
|
|
47
|
+
/**
|
|
48
|
+
* ソース信頼性スコアを計算
|
|
49
|
+
*/
|
|
50
|
+
private calculateReliabilityScore;
|
|
51
|
+
/**
|
|
52
|
+
* カバレッジスコアを計算
|
|
53
|
+
* レポートの情報網羅度を評価
|
|
54
|
+
*/
|
|
55
|
+
private calculateCoverageScore;
|
|
56
|
+
/**
|
|
57
|
+
* コンテンツ長を正規化
|
|
58
|
+
*/
|
|
59
|
+
private normalizeContentLength;
|
|
60
|
+
/**
|
|
61
|
+
* エンティティ多様性を推定
|
|
62
|
+
*/
|
|
63
|
+
private estimateEntityDiversity;
|
|
64
|
+
/**
|
|
65
|
+
* 未検証ステートメントをカウント
|
|
66
|
+
*/
|
|
67
|
+
private countUnverifiedStatements;
|
|
68
|
+
/**
|
|
69
|
+
* ステートメントを抽出
|
|
70
|
+
*/
|
|
71
|
+
private extractStatements;
|
|
72
|
+
/**
|
|
73
|
+
* ステートメント間の矛盾を検出
|
|
74
|
+
*/
|
|
75
|
+
private detectStatementConflict;
|
|
76
|
+
/**
|
|
77
|
+
* キーワードを抽出
|
|
78
|
+
*/
|
|
79
|
+
private extractKeywords;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=ReportScorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportScorer.d.ts","sourceRoot":"","sources":["../../src/consensus/ReportScorer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EAEd,cAAc,EAEf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC;;;;OAIG;gBAED,iBAAiB,GAAE,MAAY,EAC/B,OAAO,GAAE,cAAwC;IAMnD;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAInD;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW;IAoCxE;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE;IAyBnF;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAQjC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyE/B;;OAEG;IACH,OAAO,CAAC,eAAe;CAwBxB"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* KATASHIRO v1.2.0 - ReportScorer
|
|
4
|
+
* レポートのスコアリングと矛盾検出を担当
|
|
5
|
+
* @module @nahisaho/katashiro-orchestrator/consensus
|
|
6
|
+
* @version 1.2.0
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ReportScorer = void 0;
|
|
10
|
+
const types_1 = require("./types");
|
|
11
|
+
/**
|
|
12
|
+
* レポートスコアラー
|
|
13
|
+
* @requirement REQ-1.2.0-WFL-002
|
|
14
|
+
*/
|
|
15
|
+
class ReportScorer {
|
|
16
|
+
conflictThreshold;
|
|
17
|
+
weights;
|
|
18
|
+
/**
|
|
19
|
+
* コンストラクタ
|
|
20
|
+
* @param conflictThreshold 矛盾許容閾値(デフォルト: 0.1)
|
|
21
|
+
* @param weights スコアリング重み
|
|
22
|
+
*/
|
|
23
|
+
constructor(conflictThreshold = 0.1, weights = types_1.DEFAULT_SCORING_WEIGHTS) {
|
|
24
|
+
this.conflictThreshold = conflictThreshold;
|
|
25
|
+
this.weights = weights;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 複数レポートをスコアリング
|
|
29
|
+
* @param reports エージェントレポート配列
|
|
30
|
+
* @returns スコア配列
|
|
31
|
+
*/
|
|
32
|
+
scoreReports(reports) {
|
|
33
|
+
return reports.map((report) => this.scoreReport(report, reports));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 単一レポートをスコアリング
|
|
37
|
+
* @requirement REQ-1.2.0-WFL-002
|
|
38
|
+
* @param report 対象レポート
|
|
39
|
+
* @param allReports 全レポート(矛盾検出用)
|
|
40
|
+
* @returns スコア
|
|
41
|
+
*/
|
|
42
|
+
scoreReport(report, allReports) {
|
|
43
|
+
// 1. 矛盾検出
|
|
44
|
+
const otherReports = allReports.filter((r) => r.reportId !== report.reportId);
|
|
45
|
+
const conflicts = this.detectConflicts(report, otherReports);
|
|
46
|
+
// 2. 一貫性スコア(矛盾が少ないほど高い)
|
|
47
|
+
const consistencyScore = this.calculateConsistencyScore(report, conflicts);
|
|
48
|
+
// 3. ソース信頼性スコア
|
|
49
|
+
const reliabilityScore = this.calculateReliabilityScore(report.sources);
|
|
50
|
+
// 4. カバレッジスコア
|
|
51
|
+
const coverageScore = this.calculateCoverageScore(report);
|
|
52
|
+
// 5. 総合スコア計算
|
|
53
|
+
// Score = (ConsistencyScore * 0.5) + (ReliabilityScore * 0.3) + (CoverageScore * 0.2)
|
|
54
|
+
const totalScore = consistencyScore * this.weights.consistency +
|
|
55
|
+
reliabilityScore * this.weights.reliability +
|
|
56
|
+
coverageScore * this.weights.coverage;
|
|
57
|
+
// 6. ソースURL一覧を抽出
|
|
58
|
+
const sourceUrls = report.sources.map((s) => s.url);
|
|
59
|
+
return {
|
|
60
|
+
reportId: report.reportId,
|
|
61
|
+
consistencyScore,
|
|
62
|
+
reliabilityScore,
|
|
63
|
+
coverageScore,
|
|
64
|
+
totalScore,
|
|
65
|
+
conflicts,
|
|
66
|
+
unverifiedCount: this.countUnverifiedStatements(report),
|
|
67
|
+
sourceUrls,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 矛盾を検出
|
|
72
|
+
* @param report 対象レポート
|
|
73
|
+
* @param otherReports 他のレポート
|
|
74
|
+
* @returns 矛盾詳細配列
|
|
75
|
+
*/
|
|
76
|
+
detectConflicts(report, otherReports) {
|
|
77
|
+
const conflicts = [];
|
|
78
|
+
const statements = this.extractStatements(report.content);
|
|
79
|
+
for (const otherReport of otherReports) {
|
|
80
|
+
const otherStatements = this.extractStatements(otherReport.content);
|
|
81
|
+
for (const stmt of statements) {
|
|
82
|
+
for (const otherStmt of otherStatements) {
|
|
83
|
+
const conflict = this.detectStatementConflict(stmt, report, otherStmt, otherReport);
|
|
84
|
+
if (conflict && conflict.confidence >= this.conflictThreshold) {
|
|
85
|
+
conflicts.push(conflict);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return conflicts;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 一貫性スコアを計算
|
|
94
|
+
* 矛盾の数と深刻度に基づいて減点
|
|
95
|
+
*/
|
|
96
|
+
calculateConsistencyScore(_report, conflicts) {
|
|
97
|
+
if (conflicts.length === 0)
|
|
98
|
+
return 1.0;
|
|
99
|
+
// 深刻度に応じた減点
|
|
100
|
+
const totalPenalty = conflicts.reduce((sum, c) => {
|
|
101
|
+
const severityWeight = c.severity / 5; // 1-5 → 0.2-1.0
|
|
102
|
+
const confidenceWeight = c.confidence;
|
|
103
|
+
return sum + severityWeight * confidenceWeight * 0.1;
|
|
104
|
+
}, 0);
|
|
105
|
+
return Math.max(0, 1.0 - totalPenalty);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* ソース信頼性スコアを計算
|
|
109
|
+
*/
|
|
110
|
+
calculateReliabilityScore(sources) {
|
|
111
|
+
if (sources.length === 0)
|
|
112
|
+
return 0;
|
|
113
|
+
const avgReliability = sources.reduce((sum, s) => sum + (s.reliabilityScore || 0.5), 0) / sources.length;
|
|
114
|
+
return avgReliability;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* カバレッジスコアを計算
|
|
118
|
+
* レポートの情報網羅度を評価
|
|
119
|
+
*/
|
|
120
|
+
calculateCoverageScore(report) {
|
|
121
|
+
const content = report.content;
|
|
122
|
+
// 評価基準
|
|
123
|
+
const metrics = {
|
|
124
|
+
// ソース数(多いほど良い、最大10で1.0)
|
|
125
|
+
sourceCount: Math.min(report.sources.length / 10, 1.0),
|
|
126
|
+
// コンテンツ長(適度な長さが良い、2000-5000文字で最高)
|
|
127
|
+
contentLength: this.normalizeContentLength(content.length),
|
|
128
|
+
// セクション数(構造化されているほど良い)
|
|
129
|
+
sectionCount: (content.match(/^#{1,3}\s/gm) || []).length / 10,
|
|
130
|
+
// エンティティ多様性(人名、組織名、日付などの種類)
|
|
131
|
+
entityDiversity: this.estimateEntityDiversity(content),
|
|
132
|
+
};
|
|
133
|
+
// 重み付き平均
|
|
134
|
+
return (metrics.sourceCount * 0.3 +
|
|
135
|
+
metrics.contentLength * 0.2 +
|
|
136
|
+
metrics.sectionCount * 0.2 +
|
|
137
|
+
metrics.entityDiversity * 0.3);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* コンテンツ長を正規化
|
|
141
|
+
*/
|
|
142
|
+
normalizeContentLength(length) {
|
|
143
|
+
if (length < 1000)
|
|
144
|
+
return length / 1000;
|
|
145
|
+
if (length <= 5000)
|
|
146
|
+
return 1.0;
|
|
147
|
+
if (length <= 10000)
|
|
148
|
+
return 1.0 - (length - 5000) / 10000;
|
|
149
|
+
return 0.5;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* エンティティ多様性を推定
|
|
153
|
+
*/
|
|
154
|
+
estimateEntityDiversity(content) {
|
|
155
|
+
const patterns = [
|
|
156
|
+
/\d{4}年/g, // 年
|
|
157
|
+
/[A-Z][a-z]+/g, // 固有名詞(英語)
|
|
158
|
+
/「[^」]+」/g, // 引用
|
|
159
|
+
/https?:\/\/[^\s]+/g, // URL
|
|
160
|
+
];
|
|
161
|
+
let diversityScore = 0;
|
|
162
|
+
for (const pattern of patterns) {
|
|
163
|
+
const matches = content.match(pattern);
|
|
164
|
+
if (matches && matches.length > 0) {
|
|
165
|
+
diversityScore += Math.min(matches.length / 5, 0.25);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return Math.min(diversityScore, 1.0);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* 未検証ステートメントをカウント
|
|
172
|
+
*/
|
|
173
|
+
countUnverifiedStatements(report) {
|
|
174
|
+
const unverifiedPatterns = [
|
|
175
|
+
/\[要検証\]/g,
|
|
176
|
+
/\[未確認\]/g,
|
|
177
|
+
/\[unverified\]/gi,
|
|
178
|
+
/(要確認)/g,
|
|
179
|
+
];
|
|
180
|
+
let count = 0;
|
|
181
|
+
for (const pattern of unverifiedPatterns) {
|
|
182
|
+
const matches = report.content.match(pattern);
|
|
183
|
+
if (matches)
|
|
184
|
+
count += matches.length;
|
|
185
|
+
}
|
|
186
|
+
return count;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* ステートメントを抽出
|
|
190
|
+
*/
|
|
191
|
+
extractStatements(content) {
|
|
192
|
+
// 文単位で分割
|
|
193
|
+
const sentences = content
|
|
194
|
+
.split(/[。.!?!?]/)
|
|
195
|
+
.map((s) => s.trim())
|
|
196
|
+
.filter((s) => s.length > 10);
|
|
197
|
+
// 数値や日付を含む事実ステートメントを優先
|
|
198
|
+
const factualStatements = sentences.filter((s) => /\d+/.test(s) || // 数値を含む
|
|
199
|
+
/年|月|日/.test(s) || // 日付を含む
|
|
200
|
+
/は|である|された|される/.test(s) // 断定表現
|
|
201
|
+
);
|
|
202
|
+
return factualStatements.slice(0, 50); // 最大50件
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* ステートメント間の矛盾を検出
|
|
206
|
+
*/
|
|
207
|
+
detectStatementConflict(stmt1, report1, stmt2, report2) {
|
|
208
|
+
// 類似度が高いが内容が矛盾するケースを検出
|
|
209
|
+
// 1. キーワード類似度チェック
|
|
210
|
+
const keywords1 = this.extractKeywords(stmt1);
|
|
211
|
+
const keywords2 = this.extractKeywords(stmt2);
|
|
212
|
+
const commonKeywords = keywords1.filter((k) => keywords2.includes(k));
|
|
213
|
+
// 共通キーワードが少なければ関連性なし
|
|
214
|
+
if (commonKeywords.length < 2)
|
|
215
|
+
return null;
|
|
216
|
+
// 2. 数値の矛盾チェック
|
|
217
|
+
const numbers1 = stmt1.match(/\d+(?:\.\d+)?/g) || [];
|
|
218
|
+
const numbers2 = stmt2.match(/\d+(?:\.\d+)?/g) || [];
|
|
219
|
+
if (numbers1.length > 0 && numbers2.length > 0) {
|
|
220
|
+
// 同じ文脈で異なる数値
|
|
221
|
+
const hasConflictingNumbers = numbers1.some((n1) => numbers2.some((n2) => n1 !== n2 && Math.abs(parseFloat(n1) - parseFloat(n2)) > 0.1));
|
|
222
|
+
if (hasConflictingNumbers && commonKeywords.length >= 2) {
|
|
223
|
+
return {
|
|
224
|
+
conflictId: `conflict-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
225
|
+
type: 'inconsistency',
|
|
226
|
+
statement1: {
|
|
227
|
+
text: stmt1,
|
|
228
|
+
source: report1.sources[0]?.url || 'unknown',
|
|
229
|
+
reportId: report1.reportId,
|
|
230
|
+
},
|
|
231
|
+
statement2: {
|
|
232
|
+
text: stmt2,
|
|
233
|
+
source: report2.sources[0]?.url || 'unknown',
|
|
234
|
+
reportId: report2.reportId,
|
|
235
|
+
},
|
|
236
|
+
severity: 3,
|
|
237
|
+
confidence: 0.6 + commonKeywords.length * 0.1,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// 3. 否定表現の矛盾チェック
|
|
242
|
+
const negatives = ['ない', 'なかった', 'ではない', 'not', 'no', '否定'];
|
|
243
|
+
const hasNegative1 = negatives.some((n) => stmt1.includes(n));
|
|
244
|
+
const hasNegative2 = negatives.some((n) => stmt2.includes(n));
|
|
245
|
+
if (hasNegative1 !== hasNegative2 && commonKeywords.length >= 3) {
|
|
246
|
+
return {
|
|
247
|
+
conflictId: `conflict-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
248
|
+
type: 'contradiction',
|
|
249
|
+
statement1: {
|
|
250
|
+
text: stmt1,
|
|
251
|
+
source: report1.sources[0]?.url || 'unknown',
|
|
252
|
+
reportId: report1.reportId,
|
|
253
|
+
},
|
|
254
|
+
statement2: {
|
|
255
|
+
text: stmt2,
|
|
256
|
+
source: report2.sources[0]?.url || 'unknown',
|
|
257
|
+
reportId: report2.reportId,
|
|
258
|
+
},
|
|
259
|
+
severity: 4,
|
|
260
|
+
confidence: 0.5 + commonKeywords.length * 0.1,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* キーワードを抽出
|
|
267
|
+
*/
|
|
268
|
+
extractKeywords(text) {
|
|
269
|
+
// 日本語の名詞っぽいものを抽出(簡易版)
|
|
270
|
+
const words = text
|
|
271
|
+
.replace(/[。、!?「」()\[\]【】]/g, ' ')
|
|
272
|
+
.split(/\s+/)
|
|
273
|
+
.filter((w) => w.length >= 2);
|
|
274
|
+
// ストップワード除去
|
|
275
|
+
const stopWords = [
|
|
276
|
+
'これ',
|
|
277
|
+
'それ',
|
|
278
|
+
'あれ',
|
|
279
|
+
'この',
|
|
280
|
+
'その',
|
|
281
|
+
'ある',
|
|
282
|
+
'いる',
|
|
283
|
+
'する',
|
|
284
|
+
'なる',
|
|
285
|
+
'れる',
|
|
286
|
+
'られる',
|
|
287
|
+
];
|
|
288
|
+
return words.filter((w) => !stopWords.includes(w));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
exports.ReportScorer = ReportScorer;
|
|
292
|
+
//# sourceMappingURL=ReportScorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportScorer.js","sourceRoot":"","sources":["../../src/consensus/ReportScorer.ts"],"names":[],"mappings":"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"}
|