אתם יכולים להשתמש ב-ML Kit כדי לזהות את השפה של מחרוזת טקסט. אפשר לקבל את השפה הסבירה ביותר של המחרוזת, וגם את ציוני האמון של כל השפות האפשריות של המחרוזת.
ML Kit מזהה טקסט ביותר מ-100 שפות שונות בכתיב המקורי שלהן. בנוסף, המערכת יכולה לזהות טקסט רומי בערבית, בבולגרית, בסינית, ביוונית, בהינדי, ביפנית וברוסית. כאן אפשר לעיין ברשימה המלאה של השפות והסקריפטים הנתמכים.
בחבילה | לא מקובצים | |
---|---|---|
שם הספרייה | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
הטמעה | המודל מקושר באופן סטטי לאפליקציה שלכם בזמן ה-build. | המודל מוריד באופן דינמי דרך 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
, ואז להעביר את המחרוזת ל-method 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
.