זיהוי שפת הטקסט באמצעות ML Kit ב-Android

אתה יכול להשתמש ב-ML Kit כדי לזהות את השפה של מחרוזת טקסט. אתה יכול לקבל את השפה הסבירה ביותר של המחרוזת או לקבל ציוני ביטחון עבור כל השפות האפשריות של המחרוזת.

ML Kit מזהה טקסט ב-103 שפות שונות בסקריפטים המקוריים שלהם. בנוסף, ניתן לזהות טקסט רומני עבור ערבית, בולגרית, סינית, יוונית, הינדית, יפנית ורוסית.

לפני שאתה מתחיל

  1. אם עדיין לא עשית זאת, הוסף את Firebase לפרויקט Android שלך .
  2. הוסף את התלות של ספריות אנדרואיד של ML Kit לקובץ 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 מועברת למאזין ההצלחה. מכל אובייקט, אתה יכול לקבל את קוד BCP-47 של השפה ואת הביטחון שהמחרוזת נמצאת בשפה זו. ראה את הרשימה המלאה של השפות הנתמכות . שימו לב שערכים אלו מציינים את הביטחון שהמחרוזת כולה בשפה הנתונה; ערכת ML אינה מזהה מספר שפות במחרוזת אחת.

כברירת מחדל, ML Kit מחזירה רק שפות עם ערכי ביטחון של 0.01 לפחות. אתה יכול לשנות את הסף הזה על ידי העברת אובייקט FirebaseLanguageIdentificationOptions אל getLanguageIdentification() :

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyAllLanguagesConfidenceThreshold(0.5f)
                        .build());

אם אף שפה לא עומדת בסף הזה, לרשימה תהיה פריט אחד, עם הערך und .