MediaPipe Text Embedder タスクを使用すると、テキストデータの数値表現を作成して、 意味を取得します。ここでは、 Android アプリでのテキスト埋め込み。
機能、モデル、構成オプションの詳細については、 概要をご覧ください。
サンプルコード
MediaPipe Tasks のサンプルコードはテキスト埋め込みの単純な実装です アプリこの例では、2 つの単語間の意味的類似性を評価します。 テキストで構成されており、実際の Android デバイスまたは Android ダウンロードします。
独自の Android アプリの出発点としてアプリを使用することも、アプリ自体に言及することもできます。 変更する際の注意点があります。テキスト埋め込みのサンプルコードは GitHub。
コードをダウンロードする
次の手順では、サンプルのローカルコピーを作成する方法を示します。 git コマンドライン ツールを使用してコードを実行します。
<ph type="x-smartling-placeholder">サンプルコードをダウンロードするには:
- 次のコマンドを使用して Git リポジトリのクローンを作成します。
git clone https://github.com/google-ai-edge/mediapipe-samples
- 必要に応じて、スパース チェックアウトを使用するように Git インスタンスを構成し、
Text Embedder サンプルアプリのファイルのみが含まれるためです。
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
サンプルコードのローカル バージョンを作成したら、プロジェクトをインポートできます。 アプリを実行します。手順については、セットアップ ガイド: Android。
主要コンポーネント
次のファイルには、このテキスト埋め込みの例に不可欠なコードが含まれています。 アプリケーション:
- TextEmbedderHelper.kt テキスト埋め込みを初期化し、モデルとデリゲートの選択を処理します。
- MainActivity.kt: アプリを実装し、ユーザー インターフェース コンポーネントを組み立てます。
セットアップ
このセクションでは、開発環境をセットアップする主な手順と テキスト エンベディングを使用するコード プロジェクトを作成することにしました。一般的な情報については、 MediaPipe タスクを使用するための開発環境の設定 プラットフォーム バージョンの要件については、 Android。
<ph type="x-smartling-placeholder">依存関係
テキスト エンベディングでは、com.google.mediapipe:tasks-text
ライブラリを使用します。こちらの
build.gradle
ファイルに依存関係を追加します。
次のコードを使用すると、必要な依存関係をインポートできます。
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
モデル
MediaPipe Text Embedder タスクには、この変換と互換性のあるトレーニング済みモデルが必要です タスクを実行します。テキスト エンベディングで利用可能なトレーニング済みモデルについて詳しくは、以下をご覧ください。 タスクの概要のモデル セクションをご覧ください。
モデルを選択してダウンロードし、プロジェクト ディレクトリに保存します。
<dev-project-root>/src/main/assets
ModelAssetPath
パラメータ内でモデルのパスを指定します。
setupTextEmbedder()
関数の
TextEmbedderHelper.kt
ファイル:
BaseOptions.Builder.setModelAssetPath()
関数を使用してパスを指定する
使用されます。このメソッドは、次のコードサンプルで参照されています。
。
タスクを作成する
タスクを作成するには、createFrom...()
関数のいずれかを使用します。「
createFromOptions()
関数は、埋め込み機能を設定する構成オプションを受け入れます。
。createFromFile()
ファクトリを使用してタスクを初期化することもできます。
使用します。createFromFile()
関数は、相対パスまたは絶対パスを受け入れます。
モデルファイルが生成されます。構成オプションの詳細については、このモジュールの
構成オプション。
次のコードは、このタスクをビルドして構成する方法を示しています。
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
サンプルコードの実装例では、
setupTextEmbedder()
関数を次の
TextEmbedderHelper.kt
表示されます。
構成オプション
このタスクには、Android アプリ用に次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
l2_normalize |
返された特徴ベクトルを L2 ノルムで正規化するかどうか。 このオプションは、モデルにネイティブ L2_NORMALIZATION TFLite 演算ほとんどの場合はこれがすでに行われており、 そのため、L2 正規化は TFLite 推論によって実現され、 指定します。 | Boolean |
False |
quantize |
返されたエンベディングを、次を使用してバイトに量子化するかどうか スカラー量子化です。エンベディングは暗黙的にユニットノルムであると想定され、 したがって、どのディメンションも [-1.0, 1.0] の範囲の値を持つことが保証されます。使用 そうでない場合は l2_normalize オプションを使用します。 | Boolean |
False |
データの準備
テキスト エンベディングはテキスト(String
)データを処理します。タスクはデータ入力を処理し、
これにはトークン化やテンソルの前処理が含まれます。すべて
前処理は embed()
関数内で処理されます。インフラストラクチャを
入力テキストを事前に追加前処理します。
val inputText = "The input text to be embedded."
タスクを実行する
テキスト エンベディングは、embed
関数を使用して推論をトリガーします。テキストの場合
エンべディングとは、入力テキストのエンべディング ベクトルを返すことを意味します。
次のコードは、タスクモデルを使用して処理を実行する方法を示しています。
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
このコード例では、embed
関数が
TextEmbedderHelper.kt
表示されます。
結果の処理と表示
推論を実行すると、テキスト エンベディング タスクが TextEmbedderResult
を返します。
エンベディングのリストを含むオブジェクト(浮動小数点または
スカラー量子化)が使用されます。
このタスクからの出力データの例を次に示します。
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
2 つのエンベディングの意味的類似度は、
TextEmbedder.cosineSimilarity
関数を使用します。例として、次のコードをご覧ください。
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
このコード例では、TextEmbedder.cosineSimilarity()
関数が
TextEmbedderHelper.kt
表示されます。