MediaPipe Text Embedder タスクを使用すると、テキストデータの数値表現を作成して、セマンティックな意味をキャプチャできます。この機能は、コサイン類似度などの数学的比較手法を使用して、2 つのテキストの意味的類似性を比較するために頻繁に使用されます。このタスクは、機械学習(ML)モデルでテキストデータを操作し、テキストデータの数値表現を高次元特徴ベクトル(エンベディング ベクトルとも呼ばれます)のリストとして、浮動小数点形式または量子化形式で出力します。
使ってみる
このタスクの使用を開始するには、ターゲット プラットフォームの実装ガイドのいずれかに沿って操作します。以下のプラットフォーム固有のガイドでは、推奨モデルや推奨構成オプションを含むコードサンプルなど、このタスクの基本的な実装について説明します。
タスクの詳細
このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。
機能
- 入力テキスト処理 - グラフ内トークン化のないモデルで、グラフ外のトークン化をサポートします。
- エンベディング類似度計算 - 2 つの特徴ベクトル間のコサイン類似度を計算する組み込みユーティリティ関数。
- 量子化 - 特徴ベクトルのスカラー量子化をサポートします。
タスクの入力 | タスクの出力 |
---|---|
Text Embedder は、次の入力データ型を受け入れます。
|
Text Embedder は、次の要素で構成されるエンベディングのリストを出力します。
|
構成オプション
このタスクには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
l2_normalize |
返された特徴ベクトルを L2 ノルムで正規化するかどうか。このオプションは、モデルにネイティブの L2_NORMALIZATION TFLite Op がまだ含まれていない場合にのみ使用してください。ほとんどの場合、これはすでに当てはまるため、L2 正規化は TFLite 推論によって行われるため、このオプションは必要ありません。 | Boolean |
False |
quantize |
返されたエンベディングを、スカラー量子化によってバイトに量子化するかどうかを指定します。エンベディングは暗黙的に単位ノルムであると想定されるため、どのディメンションも [-1.0, 1.0] の値を持つことが保証されます。そうでない場合は、l2_normalize オプションを使用します。 | Boolean |
False |
モデル
このタスクで開発を開始すると、デフォルトの推奨モデルが提供されます。
ユニバーサル センテンス エンコーダ モデル(推奨)
このモデルはデュアル エンコーダ アーキテクチャを使用し、さまざまな質問応答データセットでトレーニングされています。
次の 2 つの文のペアについて考えてみましょう。
- (「これは魅力的で、しばしば影響を及ぼすものです」、「素晴らしい素晴らしい旅行です」)
- (「私のスマートフォンが好き」「スマートフォンが大嫌い」)
- (「このレストランはすごい仕掛けがある」「計画の詳細を再確認する必要がある」)
最初の 2 つのペアのテキスト エンベディングは、3 番目のペアのエンベディングよりもコサイン類似度が高くなります。これは、最初の 2 つのセンテンスがそれぞれ「旅の感情」と「電話の意見」という共通のトピックを共有しているのに対し、3 番目のセンテンスは共通のトピックを共有していないためです。
2 番目のペアの 2 つの文には反対の感情がありますが、共通のトピックを共有しているため、類似度スコアは高くなります。
モデル名 | 入力シェイプ | 量子化タイプ | バージョン |
---|---|---|---|
Universal Sentence Encoder | string、string、string | なし(float32) | 最新 |
タスク ベンチマーク
上記の事前トレーニング済みモデルに基づくパイプライン全体のタスク ベンチマークは次のとおりです。レイテンシの結果は、CPU / GPU を使用した Google Pixel 6 の平均レイテンシです。
モデル名 | CPU レイテンシ | GPU レイテンシ |
---|---|---|
ユニバーサル センテンス エンコーダ | 18.21 ミリ秒 | - |