تحديد لغة النص باستخدام "حزمة تعلُّم الآلة" على Android

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

تتعرّف حزمة "تعلُّم الآلة" على النصوص بـ 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 تلقائيًا اللغات التي تتضمن قيم ثقة لا تقل عن 0.01. يمكنك تغيير هذا الحد من خلال اجتياز FirebaseLanguageIdentificationOptions كائن إلى getLanguageIdentification():

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

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