获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用机器学习套件识别文本语言 (Android)

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以使用 ML Kit 来识别文本字符串的语言。您可以获得字符串最可能的语言或获得字符串所有可能语言的置信度分数。

ML Kit 可以识别 103 种不同语言的本机脚本中的文本。此外,可以识别阿拉伯语、保加利亚语、中文、希腊语、印地语、日语和俄语的罗马化文本。

在你开始之前

  1. 如果您还没有,请将 Firebase 添加到您的 Android 项目中。
  2. 将 ML Kit Android 库的依赖项添加到您的模块(应用级)Gradle 文件(通常是app/build.gradle ):
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
    
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7'
    }
    

识别字符串的语言

要识别字符串的语言,请获取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 (未确定)。

默认情况下,ML Kit 仅在识别出置信度值至少为 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 代码以及该字符串是该语言的置信度。请参阅支持语言的完整列表。请注意,这些值表示整个字符串使用给定语言的置信度; ML Kit 不会在单个字符串中识别多种语言。

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

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

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