MediaPipe Language Detector タスクを使用すると、テキストの言語を特定できます。これらの では、Android アプリで言語検出機能を使用する方法について説明します。コード ここで説明するサンプルは、 GitHub。
このタスクの動作を確認するには、 demo。 機能、モデル、構成オプションの詳細については、 概要をご覧ください。
サンプルコード
言語検出機能のサンプルコードは、上記のコードを タスクを参照してください。このコードでは、このタスクをテストして、 独自の言語検出機能を構築できます。詳しくは、 言語検出機能のサンプルコード ご覧ください。
コードをダウンロードする
次の手順では、サンプルのローカルコピーを作成する方法を示します。 git バージョン管理コマンドライン ツールでコードを作成できます。
<ph type="x-smartling-placeholder">サンプルコードをダウンロードするには:
- 次のコマンドを使用して Git リポジトリのクローンを作成します。
git clone https://github.com/google-ai-edge/mediapipe-samples
- 必要に応じて、スパース チェックアウトを使用するように Git インスタンスを構成します。
これで、Language Detector サンプルアプリのファイルのみが存在することになります。
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
Android Studio でサンプルをセットアップして実行する方法については、 コードの設定手順の例については、このモジュールの Android 向けセットアップ ガイド
主要コンポーネント
次のファイルには、テキスト分類に不可欠なコードが含まれています。 サンプルアプリ:
- LanguageDetectorHelper.kt - 言語検出機能を初期化し、モデルの選択を処理します。
- ResultsAdapter.kt - 検出結果を処理してフォーマットします。
- MainActivity.kt -
アプリを実装します(
LanguageDetectorHelper
の呼び出しなど)と、ResultsAdapter
。
セットアップ
このセクションでは、開発環境をセットアップする主な手順と Language Detector を使用するコード プロジェクトを作成することにしました。一般的な情報については、 MediaPipe タスクを使用するための開発環境の設定 プラットフォーム バージョンの要件については、 Android の設定ガイド
<ph type="x-smartling-placeholder">依存関係
言語検出機能は、com.google.mediapipe:tasks-text
ライブラリを使用します。こちらの
build.gradle
ファイルに依存関係を追加します。
次のコードを使用すると、必要な依存関係をインポートできます。
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
モデル
MediaPipe Language Detector タスクには、この変換と互換性のあるトレーニング済みモデルが必要です タスクを実行します。言語検出機能で利用可能なトレーニング済みモデルの詳細については、以下をご覧ください。 タスクの概要のモデル セクションをご覧ください。
モデルを選択してダウンロードし、プロジェクト ディレクトリに保存します。
<dev-project-root>/src/main/assets
ModelName
パラメータ内でモデルのパスを指定します。
タスクを作成する
タスクを作成するには、createFrom...()
関数のいずれかを使用します。「
createFromOptions()
関数は言語の構成オプションを受け入れます。
あります。createFromFile()
ファクトリを使用してタスクを初期化することもできます。
使用します。createFromFile()
関数は、相対パスまたは絶対パスを受け入れます。
モデルファイルが生成されます。タスクの構成について詳しくは、このモジュールの
構成オプション。
次のコードは、このタスクを作成して構成する方法を示しています。
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
タスクの作成方法の例については、次のコードサンプルをご覧ください。
LanguageDetectorHelper
クラス initDetector()
関数を使用します。
構成オプション
このタスクには、Android アプリ用に次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
maxResults |
最高スコアの言語予測の最大数をオプションで設定します。 戻ります。この値が 0 未満の場合、利用可能な結果がすべて返されます。 | 正の数 | -1 |
scoreThreshold |
予測スコアのしきい値を設定します。このしきい値は、 モデル メタデータ(存在する場合)この値を下回る結果は拒否されます。 | 任意の浮動小数点数 | 未設定 |
categoryAllowlist |
使用できる言語コードのリスト(省略可)を設定します。空でない場合、
言語コードがこのセットに含まれない言語予測は、
フィルタで除外されますこのオプションは
categoryDenylist を使用し、両方を使用するとエラーになります。 |
任意の文字列 | 未設定 |
categoryDenylist |
許可されていない言語コードのリスト(省略可)を設定します。条件
空でない場合、言語コードがこのセットに含まれている言語予測がフィルタされます。
できます。このオプションは、categoryAllowlist および
両方を使用するとエラーになります。 |
任意の文字列 | 未設定 |
データの準備
言語検出機能はテキスト(String
)データに対応しています。タスクはデータ入力を処理し、
これにはトークン化やテンソルの前処理が含まれます。すべて
前処理は detect()
関数内で処理されます。インフラストラクチャを
入力テキストを事前に追加前処理します。
String inputText = "Some input text for the language detector";
タスクを実行する
言語検出機能は、LanguageDetector.detect()
メソッドを使用して入力を処理します。
テキストの言語を予測します。別の実行手段を
Android ユーザーのブロックを避けるために検出を実行するスレッド
やり取りできます。
次のコードは、タスクで処理を実行する方法を示しています。 別の実行スレッドでモデルを作成します。
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
タスクの実行方法の例については、次のコードサンプルをご覧ください。
LanguageDetectorHelper
クラス detect()
関数を使用します。
結果の処理と表示
言語検出機能は、言語のリストで構成された LanguageDetectorResult
を出力します。
その予測の確率と合わせて出力されます「
言語カテゴリはモデル内で定義されます。タスクの概要をご覧ください。
使用しているモデルの詳細については、モデル セクションをご覧ください。
このタスクからの出力データの例を次に示します。
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
この結果は、入力テキストでモデルを実行することで取得されました。
"Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
。
コードサンプルで結果を表示する方法の例については、
ResultsAdapter
クラスと ViewHolder
内部クラスがあります。