Nhận dạng ngôn ngữ của văn bản với ML Kit trên Android

Bạn có thể sử dụng ML Kit để xác định ngôn ngữ của một chuỗi văn bản. Bạn có thể nhận được ngôn ngữ có khả năng xảy ra nhất của chuỗi hoặc nhận được điểm tin cậy cho tất cả các ngôn ngữ có thể có của chuỗi.

ML Kit nhận dạng văn bản bằng 103 ngôn ngữ khác nhau trong các tập lệnh gốc của chúng. Ngoài ra, văn bản La-tinh có thể được nhận dạng cho tiếng Ả Rập, tiếng Bungari, tiếng Trung, tiếng Hy Lạp, tiếng Hindi, tiếng Nhật và tiếng Nga.

Trước khi bắt đầu

  1. Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn .
  2. Thêm phần phụ thuộc cho các thư viện ML Kit Android vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là 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'
    }
    

Xác định ngôn ngữ của một chuỗi

Để xác định ngôn ngữ của một chuỗi, hãy lấy một phiên bản của FirebaseLanguageIdentification , sau đó chuyển chuỗi đó đến phương thức identifyLanguage() .

Ví dụ:

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.
              // ...
            }
          });

Nếu cuộc gọi thành công, mã ngôn ngữ BCP-47 sẽ được chuyển cho người nghe thành công, cho biết ngôn ngữ của văn bản. Xem danh sách đầy đủ các ngôn ngữ được hỗ trợ . Nếu không có ngôn ngữ nào có thể được phát hiện một cách chắc chắn, mã und (không xác định) sẽ được chuyển.

Theo mặc định, ML Kit trả về một giá trị không phải und chỉ khi nó xác định ngôn ngữ có giá trị tin cậy ít nhất là 0,5. Bạn có thể thay đổi ngưỡng này bằng cách chuyển đối tượng FirebaseLanguageIdentificationOptions đến getLanguageIdentification() :

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

Nhận các ngôn ngữ có thể có của một chuỗi

Để nhận các giá trị tin cậy của các ngôn ngữ có nhiều khả năng xảy ra nhất của một chuỗi, hãy lấy một phiên bản của FirebaseLanguageIdentification , sau đó chuyển chuỗi vào phương thức identifyAllLanguages() .

Ví dụ:

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.
              // ...
            }
          });

Nếu cuộc gọi thành công, danh sách các đối tượng Ngôn ngữ được IdentifiedLanguage sẽ được chuyển đến trình nghe thành công. Từ mỗi đối tượng, bạn có thể nhận mã BCP-47 của ngôn ngữ và độ tin cậy rằng chuỗi đó là ngôn ngữ đó. Xem danh sách đầy đủ các ngôn ngữ được hỗ trợ . Lưu ý rằng các giá trị này chỉ ra sự tin cậy rằng toàn bộ chuỗi là ngôn ngữ đã cho; ML Kit không xác định nhiều ngôn ngữ trong một chuỗi duy nhất.

Theo mặc định, ML Kit chỉ trả về các ngôn ngữ có giá trị tin cậy ít nhất là 0,01. Bạn có thể thay đổi ngưỡng này bằng cách chuyển đối tượng FirebaseLanguageIdentificationOptions đến getLanguageIdentification() :

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

Nếu không có ngôn ngữ nào đáp ứng ngưỡng này, danh sách sẽ có một mục, với giá trị und .