> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # キーワード網羅率 Scorer `createKeywordCoverageScorer()` 関数は、LLM の出力が入力の重要なキーワードをどの程度網羅しているかを評価します。一般的な単語やストップワードを無視しながら、キーワードの有無と一致を分析します。 ## パラメーター `createKeywordCoverageScorer()` 関数はオプションを受け取りません。 この関数は MastraScorer クラスのインスタンスを返します。`.run()` メソッドとその入出力の詳細は、[MastraScorer リファレンス](https://mastra.zisheng.pro/ja/reference/evals/mastra-scorer)を参照してください。 ## `.run()` の戻り値 **runId** (`string`): Run の ID(任意)。 **preprocessStepResult** (`object`): 抽出されたキーワードを含むオブジェクト:{ referenceKeywords: Set\, responseKeywords: Set\ } **analyzeStepResult** (`object`): キーワード網羅率を含むオブジェクト:{ totalKeywords: number, matchedKeywords: number } **score** (`number`): 一致したキーワードの割合を表す網羅率スコア(0~1)。 `.run()` は次の形式の結果を返します。 ```typescript { runId: string, extractStepResult: { referenceKeywords: Set, responseKeywords: Set }, analyzeStepResult: { totalKeywords: number, matchedKeywords: number }, score: number } ``` ## スコアリングの詳細 Scorer は、次の機能でキーワードを照合して網羅率を評価します。 - 一般的な単語とストップワードの除外(例:"the"、"a"、"and") - 大文字と小文字を区別しない照合 - 語形の変化への対応 - 技術用語と複合語の特別な処理 ### スコアリング処理 1. 入力と出力からキーワードを処理します。 - 一般的な単語とストップワードを除外 - 大文字と小文字、および語形を正規化 - 特殊な用語と複合語を処理 2. キーワード網羅率を計算します。 - テキスト間でキーワードを照合 - 一致数を集計 - 網羅率を算出 最終スコア:`(matched_keywords / total_keywords) * scale` ### スコアの解釈 網羅率スコアは 0~1 です。 - **1.0**:完全に網羅され、すべてのキーワードが含まれています。 - **0.7~0.9**:高い網羅率で、ほとんどのキーワードが含まれています。 - **0.4~0.6**:部分的に網羅され、一部のキーワードが含まれています。 - **0.1~0.3**:網羅率が低く、一致するキーワードはわずかです。 - **0.0**:回答にキーワードがまったく含まれていません。 ### 特殊なケース Scorer は、いくつかの特殊なケースを処理します。 - 空の入力/出力:両方が空ならスコア 1.0、片方だけが空なら 0.0 を返します - 単一の単語:1つのキーワードとして扱います - 技術用語:複合技術用語を維持します(例:"React.js"、"machine learning") - 大文字と小文字の違い:"JavaScript" は "javascript" と一致します - 一般的な単語:有用なキーワードに注目するため、スコアリングでは無視します ## 例 入力クエリと Agent の回答間のキーワード網羅率を評価します。 ```typescript import { runEvals } from '@mastra/core/evals' import { createKeywordCoverageScorer } from '@mastra/evals/scorers/prebuilt' import { myAgent } from './agent' const scorer = createKeywordCoverageScorer() const result = await runEvals({ data: [ { input: 'JavaScript frameworks like React and Vue', }, { input: 'TypeScript offers interfaces, generics, and type inference', }, { input: 'Machine learning models require data preprocessing, feature engineering, and hyperparameter tuning', }, ], scorers: [scorer], target: myAgent, onItemComplete: ({ scorerResults }) => { console.log({ score: scorerResults[scorer.id].score, }) }, }) console.log(result.scores) ``` `runEvals` の詳細は、[runEvals リファレンス](https://mastra.zisheng.pro/ja/reference/evals/run-evals)を参照してください。 この Scorer を Agent に追加する方法は、[Scorer の概要](https://mastra.zisheng.pro/ja/docs/evals/overview)ガイドを参照してください。 ## 関連項目 - [完全性 Scorer](https://mastra.zisheng.pro/ja/reference/evals/completeness) - [コンテンツ類似度 Scorer](https://mastra.zisheng.pro/ja/reference/evals/content-similarity) - [回答関連性 Scorer](https://mastra.zisheng.pro/ja/reference/evals/answer-relevancy) - [テキスト差分 Scorer](https://mastra.zisheng.pro/ja/reference/evals/textual-difference)