ระบุภาษาของข้อความด้วย 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 ของ Google ทั้งใน buildscript และ allprojects

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

    สําหรับการรวมแพ็กเกจกับแอปของคุณ ให้ทําดังนี้

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

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