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