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 を使用してダウンロードをリクエストすることもできます。
インストール時のモデルのダウンロードを有効にしない場合、または明示的なダウンロードをリクエストしない場合、モデルは ID の初回実行時にダウンロードされます。ダウンロードが完了する前にリクエストしても結果は返されません。
文字列の言語を特定する
文字列の言語を特定するには、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
になります。