コンテンツ類似度
この例では、Mastra のコンテンツ類似度メトリクスを使用して、2つのコンテンツ間のテキスト類似度を評価する方法を示します。
概要
この例では、以下の方法を示します。
- Content Similarityメトリクスの設定方法
- 異なるテキストバリエーションの比較方法
- 類似度スコアの分析方法
- 様々な類似度シナリオへの対応方法
セットアップ
依存関係
必要な依存関係をインポートします:
src/index.ts
import { ContentSimilarityMetric } from "@mastra/evals/nlp";
メトリックの設定
Content Similarityメトリックを設定します:
src/index.ts
const metric = new ContentSimilarityMetric();
使用例
高い類似度の例
ほとんど同じテキストを比較します:
src/index.ts
const text1 = "The quick brown fox jumps over the lazy dog.";
const reference1 = "A quick brown fox jumped over a lazy dog.";
console.log("Example 1 - High Similarity:");
console.log("Text:", text1);
console.log("Reference:", reference1);
const result1 = await metric.measure(reference1, text1);
console.log("Metric Result:", {
score: result1.score,
info: {
similarity: result1.info.similarity,
},
});
// Example Output:
// Metric Result: { score: 0.7761194029850746, info: { similarity: 0.7761194029850746 } }
中程度の類似度の例
意味は似ているが表現が異なるテキストを比較します:
src/index.ts
const text2 = "A brown fox quickly leaps across a sleeping dog.";
const reference2 = "The quick brown fox jumps over the lazy dog.";
console.log("Example 2 - Moderate Similarity:");
console.log("Text:", text2);
console.log("Reference:", reference2);
const result2 = await metric.measure(reference2, text2);
console.log("Metric Result:", {
score: result2.score,
info: {
similarity: result2.info.similarity,
},
});
// Example Output:
// Metric Result: {
// score: 0.40540540540540543,
// info: { similarity: 0.40540540540540543 }
// }
低い類似度の例
明らかに異なるテキストを比較します:
src/index.ts
const text3 = "The cat sleeps on the windowsill.";
const reference3 = "The quick brown fox jumps over the lazy dog.";
console.log("Example 3 - Low Similarity:");
console.log("Text:", text3);
console.log("Reference:", reference3);
const result3 = await metric.measure(reference3, text3);
console.log("Metric Result:", {
score: result3.score,
info: {
similarity: result3.info.similarity,
},
});
// Example Output:
// Metric Result: {
// score: 0.25806451612903225,
// info: { similarity: 0.25806451612903225 }
// }
結果の理解
この指標は以下を提供します:
- 0から1までの類似度スコア:
- 1.0: 完全一致 - テキストが全く同じ
- 0.7-0.9: 高い類似度 - 言い回しにわずかな違い
- 0.4-0.6: 中程度の類似度 - 同じトピックだが表現が異なる
- 0.1-0.3: 低い類似度 - 一部の単語は共通するが意味が異なる
- 0.0: 類似性なし - 全く異なるテキスト
GitHubで例を見る