ML Kit を使用すると、テキストの文字列の言語を識別できます。文字列の言語として特に可能性の高いものだけでなく、文字列の言語として可能性のあるものすべての信頼スコアも取得できます。
ML Kit では、100 種類以上の言語がネイティブ スクリプトのテキストで認識されます。また、アラビア語、ブルガリア語、中国語、ギリシャ語、ヒンディー語、日本語、ロシア語の場合はローマ字化されたテキストが認識されます。サポートされている言語とスクリプトの一覧をご覧ください。
バンドル | バンドル解除 | |
---|---|---|
ライブラリ名 | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
実装 | モデルはビルド時にアプリに静的にリンクされます。 | モデルは Google Play 開発者サービス経由で動的にダウンロードされます。 |
アプリのサイズへの影響 | サイズが約 900 KB 増加します。 | サイズが約 200 KB 増加します。 |
初期化時間 | モデルはすぐに利用できます。 | 初めて使用する前にモデルのダウンロードを待つ必要がある場合があります。 |
試してみる
- サンプルアプリを試して、この API の使用例を確認してください。
始める前に
プロジェクト レベルの
build.gradle
ファイルのbuildscript
セクションとallprojects
セクションの両方に Google の Maven リポジトリを組み込みます。ML Kit Android ライブラリの依存関係をモジュールのアプリレベルの Gradle ファイル(通常は
app/build.gradle
)に追加します。ニーズに応じて、次のいずれかの依存関係を選択します。モデルをアプリにバンドルする場合:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
Google Play 開発者サービスでモデルを使用する場合:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
Google Play 開発者サービスでモデルを使用する場合は、アプリが Google Play ストアからインストールされたら、モデルをデバイスに自動的にダウンロードするようにアプリを構成できます。この構成を行うには、アプリの
AndroidManifest.xml
ファイルに次の宣言を追加します。<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Google Play 開発者サービスの ModuleInstallClient API を使用して、モデルの可用性を明示的に確認し、ダウンロードをリクエストすることもできます。
インストール時のモデルのダウンロードを有効にしない、または明示的なダウンロードをリクエストしない場合は、識別子の初回実行時にモデルがダウンロードされます。ダウンロードが完了する前にリクエストしても結果は生成されません。
文字列の言語を識別する
文字列の言語を識別するには、LanguageIdentification.getClient()
を呼び出して LanguageIdentifier
のインスタンスを取得し、文字列を LanguageIdentifier
の identifyLanguage()
メソッドに渡します。
次に例を示します。
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
呼び出しが成功すると、テキストの言語を示す BCP-47 言語コードが成功リスナーに渡されます。検出された言語が信頼できるものでない場合は、コード und
(不確定)が渡されます。
デフォルトでは、ML Kit は、言語の識別で信頼値が 0.5 以上の場合にのみ und
以外の値を返します。このしきい値は、LanguageIdentificationOptions
オブジェクトを getClient()
に渡すことで変更できます。
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
文字列の言語として可能性のあるものを取得する
文字列の言語として特に可能性が高いものの信頼値を取得するには、LanguageIdentifier
のインスタンスを取得して、文字列を identifyPossibleLanguages()
メソッドに渡します。
次に例を示します。
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); float confidence = identifiedLanguage.getConfidence(); Log.i(TAG, language + " (" + confidence + ")"); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
呼び出しが成功すると、IdentifiedLanguage
オブジェクトのリストが成功リスナーに渡されます。各オブジェクトから、言語の BCP-47 コードと、文字列がその言語であることの信頼値を取得できます。この値は、文字列全体が所定の言語であることの信頼度を示しています。ML Kit では、1 つの文字列内の複数の言語は識別されません。
デフォルトでは、ML Kit は信頼値が 0.01 以上の言語のみを返します。このしきい値は、LanguageIdentificationOptions
オブジェクトを getClient()
に渡すことで変更できます。
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
このしきい値を満たす言語がない場合、リストには 1 つの項目が含まれ、その値は und
になります。