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.5' }
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());
このしきい値を満たす言語がない場合、リストには値が und
のアイテムが 1 つ含まれます。