คุณสามารถใช้ ML Kit เพื่อระบุภาษาของสตริงข้อความ โดยจะได้รับภาษาที่มีแนวโน้มมากที่สุดของสตริง รวมถึงคะแนนความเชื่อมั่นสำหรับภาษาที่เป็นไปได้ทั้งหมดของสตริง
ML Kit สามารถจดจำข้อความในภาษาต่างๆ มากกว่า 100 ภาษาด้วยสคริปต์ดั้งเดิมของภาษาเหล่านั้น นอกจากนี้ ยังสามารถจดจำข้อความที่เขียนด้วยอักษรโรมันสำหรับภาษาอาหรับ บัลแกเรีย จีน, กรีก ฮินดี ญี่ปุ่น และรัสเซีย ดูรายการภาษาและสคริปต์ทั้งหมดที่รองรับ
| รวมกลุ่ม | ไม่ได้รวมกลุ่ม | |
|---|---|---|
| ชื่อไลบรารี | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
| การใช้งาน | โมเดลจะลิงก์กับแอปแบบคงที่ในระหว่างเวลาบิลด์ | ระบบจะดาวน์โหลดโมเดลแบบไดนามิกผ่านบริการ Google Play |
| ผลกระทบต่อขนาดแอป | ขนาดเพิ่มขึ้นประมาณ 900 KB | ขนาดเพิ่มขึ้นประมาณ 200 KB |
| เวลาเริ่มต้น | โมเดลพร้อมใช้งานทันที | อาจต้องรอให้ดาวน์โหลดโมเดลก่อนใช้งานครั้งแรก |
ลองเลย
- ลองใช้แอปตัวอย่างเพื่อ ดูตัวอย่างการใช้งาน API นี้
ก่อนเริ่มต้น
ในไฟล์
build.gradleระดับโปรเจ็กต์ ให้ตรวจสอบว่าได้รวมที่เก็บ Maven ของ Google ไว้ในส่วนbuildscriptและallprojectsแล้วเพิ่มทรัพยากร Dependency สำหรับไลบรารี ML Kit สำหรับ Android ลงในไฟล์ Gradle ระดับแอปของโมดูล ซึ่งโดยปกติจะเป็น
app/build.gradleเลือกทรัพยากร Dependency รายการใดรายการหนึ่งต่อไปนี้ตามความต้องการสำหรับการรวมกลุ่มโมเดลกับแอป
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }สำหรับการใช้โมเดลในบริการ 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' }หากเลือกใช้โมเดลในบริการ 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>นอกจากนี้ คุณยังตรวจสอบความพร้อมใช้งานของโมเดลและขอให้ดาวน์โหลดผ่านบริการ Google Play ModuleInstallClient API ได้ด้วย
หากไม่ได้เปิดใช้การดาวน์โหลดโมเดลในระหว่างการติดตั้งหรือขอให้ดาวน์โหลดอย่างชัดแจ้ง ระบบจะดาวน์โหลดโมเดลเมื่อคุณเรียกใช้ตัวระบุเป็นครั้งแรก คำขอที่คุณส่งก่อนการดาวน์โหลดเสร็จสมบูรณ์จะไม่แสดงผลลัพธ์
ระบุภาษาของสตริง
หากต้องการระบุภาษาของสตริง ให้เรียก 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 ก็ต่อเมื่อระบุภาษาด้วยค่า Confidence อย่างน้อย 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