ระบุภาษาของข้อความด้วย ML Kit บน Android

คุณใช้ ML Kit เพื่อระบุภาษาของสตริงข้อความได้ คุณสามารถ รับภาษาที่เป็นไปได้มากที่สุดของสตริง หรือรับคะแนนความเชื่อมั่นสำหรับ ภาษาที่เป็นไปได้ของสตริง

ML Kit จดจำข้อความในสคริปต์ในภาษาต่างๆ ได้ถึง 103 ภาษา นอกจากนี้ ตัวอักษรภาษาอังกฤษสามารถจดจำสำหรับภาษาอาหรับ บัลแกเรีย ภาษาจีน กรีก ฮินดี ญี่ปุ่น และรัสเซีย

ก่อนเริ่มต้น

  1. หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
  2. เพิ่มทรัพยากร Dependency สำหรับไลบรารี 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 จะแสดงผลค่าอื่นที่ไม่ใช่ und เฉพาะเมื่อมีการระบุ ภาษาที่มีค่าความเชื่อมั่นอย่างน้อย 0.5 คุณสามารถเปลี่ยนแปลง เกณฑ์โดยการส่งออบเจ็กต์ 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());

หากไม่มีภาษาที่ตรงกับเกณฑ์นี้ รายการจะมี 1 รายการพร้อมค่า und.