אתם יכולים להשתמש ב-ML Kit כדי לזהות את השפה של מחרוזת טקסט. אפשר לקבל את השפה הסבירה ביותר של המחרוזת, וגם ציוני מהימנות לכל השפות האפשריות של המחרוזת.
ML Kit מזהה טקסט ביותר מ-100 שפות שונות, בכתיב בשפה המקורית. בנוסף, אפשר לזהות טקסט ברומניזציה בשפות הבאות: ערבית, בולגרית, סינית, יוונית, הינדי, יפנית ורוסית. הרשימה המלאה של השפות והסקריפטים הנתמכים
בחבילה | לא מקובצים | |
---|---|---|
שם הספרייה | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
הטמעה | המודל מקושר באופן סטטי לאפליקציה בזמן הבנייה. | המודל מורד באופן דינמי דרך Google Play Services. |
השפעה על גודל האפליקציה | הגודל גדל בכ-900KB. | הגודל גדל בכ-200KB. |
זמן האתחול | המודל זמין באופן מיידי. | יכול להיות שתצטרכו לחכות עד שהמודל יורד לפני השימוש הראשון. |
רוצה לנסות?
- כדאי להתנסות באפליקציית הדוגמה כדי לראות דוגמה לשימוש ב-API הזה.
לפני שמתחילים
בקובץ
build.gradle
ברמת הפרויקט, מוודאים שמאגר Maven של Google כלול בקטעיםbuildscript
ו-allprojects
.מוסיפים את התלויות של ספריות ML Kit ל-Android לקובץ Gradle ברמת האפליקציה של המודול, שבדרך כלל נקרא
app/build.gradle
. בוחרים אחת מהתלויות הבאות בהתאם לצרכים:כדי לארוז את המודל עם האפליקציה:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
כדי להשתמש במודל ב-Google Play Services:
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 Services, אפשר להגדיר את האפליקציה כך שהמודל יורד אוטומטית למכשיר אחרי שהאפליקציה מותקנת מחנות Play. כדי לעשות זאת, מוסיפים את ההצהרה הבאה לקובץ
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 Services.
אם לא מפעילים הורדות של מודלים בזמן ההתקנה או לא מבקשים הורדה מפורשת, המודל יורד בפעם הראשונה שמריצים את המזהה. בקשות ששולחים לפני שההורדה מסתיימת לא מניבות תוצאות.
זיהוי השפה של מחרוזת
כדי לזהות את השפה של מחרוזת, קוראים ל-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());
אם אף שפה לא עומדת בסף הזה, הרשימה כוללת פריט אחד עם הערך und
.