Skip to Content

KeywordCoverageMetric

KeywordCoverageMetric クラスは、LLM の出力が入力の重要なキーワードをどれだけ網羅しているかを評価します。一般的な単語やストップワードを無視しながら、キーワードの存在と一致を分析します。

基本的な使い方

import { KeywordCoverageMetric } from "@mastra/evals/nlp"; const metric = new KeywordCoverageMetric(); const result = await metric.measure( "What are the key features of Python programming language?", "Python is a high-level programming language known for its simple syntax and extensive libraries.", ); console.log(result.score); // Coverage score from 0-1 console.log(result.info); // Object containing detailed metrics about keyword coverage

measure() のパラメーター

input:

string
一致させるキーワードを含む元のテキスト

output:

string
キーワードカバレッジを評価するテキスト

戻り値

score:

number
一致したキーワードの割合を表すカバレッジスコア(0~1)

info:

object
キーワードカバレッジに関する詳細な指標を含むオブジェクト
number

matchedKeywords:

number
出力内で見つかったキーワードの数
number

totalKeywords:

number
入力からのキーワードの総数

スコアリングの詳細

この指標は、以下の特徴を持つキーワードとのマッチングによってキーワードカバレッジを評価します。

  • 一般的な単語やストップワードのフィルタリング(例:「the」「a」「and」など)
  • 大文字・小文字を区別しないマッチング
  • 単語形のバリエーションへの対応
  • 技術用語や複合語の特別な処理

スコアリングプロセス

  1. 入力と出力からキーワードを処理します:

    • 一般的な単語やストップワードを除外
    • 大文字・小文字や単語形を正規化
    • 特別な用語や複合語を処理
  2. キーワードカバレッジを計算します:

    • テキスト間でキーワードをマッチング
    • 成功したマッチ数をカウント
    • カバレッジ比率を算出

最終スコア:(matched_keywords / total_keywords) * scale

スコアの解釈

(0 から scale、デフォルトは 0-1)

  • 1.0: 完全なキーワードカバレッジ
  • 0.7-0.9: ほとんどのキーワードが含まれている良好なカバレッジ
  • 0.4-0.6: 一部のキーワードが欠落している中程度のカバレッジ
  • 0.1-0.3: 多くのキーワードが欠落している低いカバレッジ
  • 0.0: キーワードの一致なし

例と分析

import { KeywordCoverageMetric } from "@mastra/evals/nlp"; const metric = new KeywordCoverageMetric(); // Perfect coverage example const result1 = await metric.measure( "The quick brown fox jumps over the lazy dog", "A quick brown fox jumped over a lazy dog", ); // { // score: 1.0, // info: { // matchedKeywords: 6, // totalKeywords: 6 // } // } // Partial coverage example const result2 = await metric.measure( "Python features include easy syntax, dynamic typing, and extensive libraries", "Python has simple syntax and many libraries", ); // { // score: 0.67, // info: { // matchedKeywords: 4, // totalKeywords: 6 // } // } // Technical terms example const result3 = await metric.measure( "Discuss React.js component lifecycle and state management", "React components have lifecycle methods and manage state", ); // { // score: 1.0, // info: { // matchedKeywords: 4, // totalKeywords: 4 // } // }

特殊なケース

このメトリクスはいくつかの特殊なケースに対応しています:

  • 入力/出力が空の場合:両方が空ならスコアは1.0、どちらか一方のみ空なら0.0を返します
  • 単語が1つの場合:1つのキーワードとして扱います
  • 技術用語:複合的な技術用語(例: “React.js”, “machine learning”)を保持します
  • 大文字・小文字の違い:“JavaScript”は”javascript”と一致します
  • 一般的な単語:意味のあるキーワードに集中するため、スコア計算時に無視されます

関連