ระบุภาษาของข้อความด้วย 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 จะถูกส่งไปยัง Listener ที่สำเร็จ จากแต่ละอ็อบเจ็กต์ คุณสามารถรับโค้ด BCP-47 ของภาษาและความมั่นใจว่าสตริงนั้นเป็นภาษานั้นได้ ดู รายการภาษาที่รองรับทั้งหมด โปรดทราบว่าค่าเหล่านี้บ่งบอกถึงความมั่นใจว่าสตริงทั้งหมดเป็นภาษาที่กำหนด ML Kit ไม่ได้ระบุหลายภาษาในสตริงเดียว

ตามค่าเริ่มต้น ML Kit จะส่งคืนเฉพาะภาษาที่มีค่าความเชื่อมั่นอย่างน้อย 0.01 คุณสามารถเปลี่ยนเกณฑ์นี้ได้โดยส่งวัตถุ FirebaseLanguageIdentificationOptions ไปที่ getLanguageIdentification() :

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

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