TextualDifferenceMetric
TextualDifferenceMetric
クラスは、シーケンスマッチングを使用して2つの文字列間のテキストの違いを測定します。これは、あるテキストを別のテキストに変換するために必要な操作の数を含む、変更に関する詳細な情報を提供します。
基本的な使用法
import { TextualDifferenceMetric } from "@mastra/evals/nlp";
const metric = new TextualDifferenceMetric();
const result = await metric.measure(
"The quick brown fox",
"The fast brown fox"
);
console.log(result.score); // 0-1の類似度比率
console.log(result.info); // 詳細な変更メトリクス
measure() パラメーター
input:
string
比較対象となる元のテキスト
output:
string
差異を評価するためのテキスト
戻り値
score:
number
1が同一のテキストを示す類似度比率 (0-1)
info:
差異に関する詳細なメトリクス
number
confidence:
number
テキスト間の長さの違いに基づく信頼度スコア (0-1)
number
ratio:
number
テキスト間の生の類似度比率
number
changes:
number
変更操作の数(挿入、削除、置換)
number
lengthDiff:
number
入力と出力の長さの正規化された差 (0-1)
スコアリングの詳細
このメトリックは、いくつかの測定を計算します:
- 類似度比: テキスト間のシーケンスマッチングに基づく (0-1)
- 変更: 一致しない操作の必要数
- 長さの差: テキストの長さの正規化された差
- 信頼度: 長さの差に反比例
スコアリングプロセス
-
テキストの違いを分析します:
- 入力と出力の間でシーケンスマッチングを行う
- 必要な変更操作の数を数える
- 長さの差を測定する
-
メトリックを計算します:
- 類似度比を計算する
- 信頼度スコアを決定する
- 重み付けされたスコアに結合する
最終スコア: (similarity_ratio * confidence) * scale
スコアの解釈
(0からスケールまで、デフォルトは0-1)
- 1.0: 同一のテキスト - 違いなし
- 0.7-0.9: 小さな違い - 少しの変更が必要
- 0.4-0.6: 中程度の違い - かなりの変更
- 0.1-0.3: 大きな違い - 大幅な変更
- 0.0: 完全に異なるテキスト
分析付きの例
import { TextualDifferenceMetric } from "@mastra/evals/nlp";
const metric = new TextualDifferenceMetric();
const result = await metric.measure(
"Hello world! How are you?",
"Hello there! How is it going?"
);
// Example output:
// {
// score: 0.65,
// info: {
// confidence: 0.95,
// ratio: 0.65,
// changes: 2,
// lengthDiff: 0.05
// }
// }