ระบุภาษาของข้อความด้วย ML Kit บน 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 จะส่งคืนค่าอื่นที่ไม่ใช่ 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());

หากไม่มีภาษาใดที่ตรงตามเกณฑ์นี้ รายการจะมีหนึ่งรายการ โดยมีค่าเป็น und