حدد لغة النص باستخدام ML Kit على Android

يمكنك استخدام ML Kit لتحديد لغة سلسلة النص. يمكنك الحصول على لغة السلسلة الأكثر احتمالًا أو الحصول على درجات الثقة لجميع اللغات المحتملة للسلسلة.

يتعرف ML Kit على النص بـ 103 لغة مختلفة في نصوصهم الأصلية. بالإضافة إلى ذلك ، يمكن التعرف على النص المكتوب بالحروف اللاتينية للعربية والبلغارية والصينية واليونانية والهندية واليابانية والروسية.

قبل ان تبدأ

  1. أضف Firebase إلى مشروع Android ، إذا لم تكن قد قمت بذلك بالفعل.
  2. أضف تبعيات مكتبات 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 إلى مستمع النجاح. من كل كائن ، يمكنك الحصول على رمز BCP-47 للغة والثقة في أن السلسلة بهذه اللغة. انظر القائمة الكاملة للغات المدعومة . لاحظ أن هذه القيم تشير إلى الثقة في أن السلسلة بأكملها باللغة المحددة ؛ لا تحدد ML Kit لغات متعددة في سلسلة واحدة.

بشكل افتراضي ، تقوم ML Kit بإرجاع اللغات التي لها قيم ثقة لا تقل عن 0.01. يمكنك تغيير هذا الحد عن طريق تمرير كائن FirebaseLanguageIdentificationOptions للحصول على getLanguageIdentification() :

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

إذا لم تفي أي لغة بهذا الحد ، فستتضمن القائمة عنصرًا واحدًا بالقيمة und .