转到控制台

在 Android 上使用机器学习套件识别文本的语言

您可以使用机器学习套件识别文本字符串使用的语言。您可以获取字符串最可能使用的语言,也可以获取字符串可能使用的所有语言的置信度分数。

机器学习套件可识别原生文字中 103 种不同语言的文本。此外,还可以识别阿拉伯文、保加利亚文、中文、希腊文、印地文、日文和俄文中的拉丁字母文字。

如需了解此 API 的实际应用示例,请查看 GitHub 上的机器学习套件快速入门示例

准备工作

  1. 将 Firebase 添加到您的 Android 项目(如果尚未添加)。
  2. 请务必在您的项目级 build.gradle 文件的 buildscriptallprojects 部分添加 Google 的 Maven 代码库。
  3. 将 Android 版机器学习套件库的依赖项添加到您的模块(应用级)Gradle 文件(通常为 app/build.gradle):
    dependencies {
      // ...
    
      implementation 'com.google.firebase:firebase-ml-natural-language:20.0.2'
      implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.2'
    }
    

识别字符串使用的语言

要识别字符串使用的语言,请获取 FirebaseLanguageIdentification 的一个实例,然后将字符串传递给 identifyLanguage() 方法。

例如:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyLanguage(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(@Nullable String languageCode) {
              if (languageCode != "und") {
                Log.i(TAG, "Language: " + languageCode);
              } else {
                Log.i(TAG, "Can't identify language.");
              }
            }
          })
      .addOnFailureListener(
          new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
              // Model couldn’t be loaded or other internal error.
              // ...
            }
          });

如果调用成功,则系统会向成功侦听器传递一个 BCP-47 语言代码,表示文本的语言。请参阅所支持的语言的完整列表。如果无法确保检测到语言,则传递代码 und(未确定)。

默认情况下,机器学习套件仅在识别置信度值至少为 0.5 的语言时才会返回非 und 值。您可以通过将 FirebaseLanguageIdentificationOptions 对象传递给 getLanguageIdentification() 来更改此阈值:

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyLanguageConfidenceThreshold(0.34f)
                        .build());

获取字符串可能使用的语言

要获取字符串最可能使用的语言的置信度值,请获取 FirebaseLanguageIdentification 的一个实例,然后将字符串传递给 identifyAllLanguages() 方法。

例如:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyAllLanguages(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
              for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
                String language = identifiedLanguage.getLanguageCode();
                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 代码以及字符串使用该语言的置信度。请参阅所支持的语言的完整列表。请注意,这些值表示整个字符串使用给定语言的置信度;机器学习套件无法识别单个字符串中的多种语言。

默认情况下,机器学习套件仅返回置信度值至少为 0.01 的语言。您可以通过将 FirebaseLanguageIdentificationOptions 对象传递给 getLanguageIdentification() 来更改此阈值:

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyAllLanguagesConfidenceThreshold(0.5f)
                        .build());

如果没有语言符合此阈值,则此列表将包含一个值为 und 的项。

后续步骤

如需了解此 API 的实际应用示例,请查看 GitHub 上的机器学习套件快速入门示例