تحديد لغة النص باستخدام حزمة تعلّم الآلة على 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 .