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

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

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

รวมกลุ่มไม่ได้จัดกลุ่ม
ชื่อไลบรารีcom.google.mlkit:language-idcom.google.android.gms:play-services-mlkit-language-id
การใช้งานโมเดลลิงก์กับแอปของคุณแบบคงที่ ณ เวลาบิลด์โมเดลจะดาวน์โหลดแบบไดนามิกผ่านบริการ Google Play
ผลกระทบของขนาดแอปขนาดเพิ่มขึ้นประมาณ 900 KBขนาดที่เพิ่มขึ้นประมาณ 200 KB
เวลาในการเริ่มต้นโมเดลจะพร้อมใช้งานทันทีอาจต้องรอให้โมเดลดาวน์โหลดก่อนใช้งานครั้งแรก

ลองเลย

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

  1. ในไฟล์ build.gradle ระดับโปรเจ็กต์ ตรวจสอบว่าได้รวม ที่เก็บ Maven ทั้งในส่วน buildscript และ allprojects

  2. เพิ่มทรัพยากร Dependency สำหรับไลบรารี ML Kit Android ลงในโมดูล ไฟล์ Gradle ระดับแอป ซึ่งมักจะเป็น app/build.gradle เลือก 1 ตัวเลือก ทรัพยากร Dependency ต่อไปนี้ตามความต้องการของคุณ

    สำหรับการรวมโมเดลกับแอป

    dependencies {
      // ...
      // Use this dependency to bundle the model with your app
      implementation 'com.google.mlkit:language-id:17.0.5'
    }
    

    สำหรับการใช้โมเดลในบริการ Google Play

    dependencies {
      // ...
      // Use this dependency to use the dynamically downloaded model in Google Play Services
      implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0'
    }
    
  3. หากเลือกใช้โมเดลในบริการ Google Play คุณจะกำหนดค่า แอปของคุณเพื่อดาวน์โหลดโมเดลไปยังอุปกรณ์โดยอัตโนมัติหลังจากที่แอป ที่ติดตั้งจาก Play Store ซึ่งทำได้โดยเพิ่มการประกาศต่อไปนี้ลงใน ไฟล์ AndroidManifest.xml ของแอป

    <application ...>
          ...
          <meta-data
              android:name="com.google.mlkit.vision.DEPENDENCIES"
              android:value="langid" >
          <!-- To use multiple models: android:value="langid,model2,model3" -->
    </application>
    

    คุณยังสามารถตรวจสอบความพร้อมใช้งานของโมเดลอย่างชัดเจนและขอดาวน์โหลดผ่าน ModuleInstallClient API ของบริการ Google Play

    หากคุณไม่เปิดใช้การดาวน์โหลดโมเดลเวลาติดตั้งหรือขอการดาวน์โหลดอย่างชัดแจ้ง ระบบจะดาวน์โหลดโมเดลในครั้งแรกที่คุณเรียกใช้ตัวระบุ คําขอที่คุณสร้าง ก่อนที่การดาวน์โหลดจะเสร็จสิ้น จะไม่เกิดผลลัพธ์ใดๆ

ระบุภาษาของสตริง

หากต้องการระบุภาษาของสตริง ให้เรียก LanguageIdentification.getClient() เพื่อ รับอินสแตนซ์ของ LanguageIdentifier แล้วส่งสตริงไปยัง identifyLanguage() เมธอดจาก LanguageIdentifier

เช่น

Kotlin

val languageIdentifier = LanguageIdentification.getClient()
languageIdentifier.identifyLanguage(text)
        .addOnSuccessListener { languageCode ->
            if (languageCode == "und") {
                Log.i(TAG, "Can't identify language.")
            } else {
                Log.i(TAG, "Language: $languageCode")
            }
        }
        .addOnFailureListener {
            // Model couldn’t be loaded or other internal error.
            // ...
        }

Java

LanguageIdentifier languageIdentifier =
        LanguageIdentification.getClient();
languageIdentifier.identifyLanguage(text)
        .addOnSuccessListener(
                new OnSuccessListener<String>() {
                    @Override
                    public void onSuccess(@Nullable String languageCode) {
                        if (languageCode.equals("und")) {
                            Log.i(TAG, "Can't identify language.");
                        } else {
                            Log.i(TAG, "Language: " + languageCode);
                        }
                    }
                })
        .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 คุณสามารถเปลี่ยนแปลง เกณฑ์โดยการส่งออบเจ็กต์ LanguageIdentificationOptions ไปยัง getClient():

Kotlin

val languageIdentifier = LanguageIdentification
        .getClient(LanguageIdentificationOptions.Builder()
                .setConfidenceThreshold(0.34f)
                .build())

Java

LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
        new LanguageIdentificationOptions.Builder()
                .setConfidenceThreshold(0.34f)
                .build());

ดูภาษาที่เป็นไปได้ของสตริง

หากต้องการค่าความเชื่อมั่นของภาษาที่มีแนวโน้มมากที่สุดของสตริง ให้ใช้ ของ LanguageIdentifier แล้วส่งสตริงไปยัง identifyPossibleLanguages() วิธี

เช่น

Kotlin

val languageIdentifier = LanguageIdentification.getClient()
languageIdentifier.identifyPossibleLanguages(text)
        .addOnSuccessListener { identifiedLanguages ->
            for (identifiedLanguage in identifiedLanguages) {
                val language = identifiedLanguage.languageTag
                val confidence = identifiedLanguage.confidence
                Log.i(TAG, "$language $confidence")
            }
        }
        .addOnFailureListener {
            // Model couldn’t be loaded or other internal error.
            // ...
        }

Java

LanguageIdentifier languageIdentifier =
        LanguageIdentification.getClient();
languageIdentifier.identifyPossibleLanguages(text)
        .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() {
            @Override
            public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
                for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
                    String language = identifiedLanguage.getLanguageTag();
                    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 คุณสามารถเปลี่ยนเกณฑ์นี้ได้โดยการส่ง LanguageIdentificationOptions ออบเจ็กต์ที่ getClient():

Kotlin

val languageIdentifier = LanguageIdentification
      .getClient(LanguageIdentificationOptions.Builder()
              .setConfidenceThreshold(0.5f)
              .build())

Java

LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
      new LanguageIdentificationOptions.Builder()
              .setConfidenceThreshold(0.5f)
              .build());

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