تنفيذ مصنِّف النص

يستخدم مصنِّف النصوص تقنيات تعلُّم الآلة لمساعدة المطوّرين. تصنيف النص.

مصنِّف نص إصدار Android 11

نظام Android 11 يوفّر إعدادًا تلقائيًا قابلاً للتحديث تنفيذ خدمة مصنف النص في وحدة ExtServices. على أجهزة Android 11 أو أعلى، تكون getTextClassifier() هذا الإجراء الافتراضي في وحدة ExtServices. يُنصَح للشركات المصنّعة للأجهزة باستخدام طريقة تنفيذ TextClassifierService لأنّه يمكن تعديله من خلال Mainline عبر الهواء التحديثات.

يزيل Android 11 أيضًا "مصنِّف النص المحلي" والتنفيذ التلقائي الذي سبق أن تم تقديمه في Android 8.1. وبالتالي getLocalTextClassifier() تؤدي إلى إرجاع مصنف النص NO_OP. بدلاً من العملاء التنفيذ، فينبغي عليك استخدام getDefaultTextClassifierImplementation() .

للشركات المصنّعة للأجهزة التي قد ترغب في استخدام نصوصها الخاصة بتصنيف النصوص الخوارزميات، يمكنها تنفيذ خدمة مصنف نصوص مخصصة من خلال تحديد config_defaultTextClassifierPackage في config.xml الملف. إذا لم يتم تحديد هذه الإعدادات، سيتم تنفيذ النظام التلقائي المشروع. يمكن أن تحصل عمليات التنفيذ المخصّصة على مثيل من القيمة التلقائية التنفيذ من خلال استدعاء TextClassifierService.getDefaultTextClassifierImplementation(Context) لمزيد من المعلومات، يُرجى مراجعة تنفيذ خدمة مصنِّف نص مخصّص

الاختبار

للتحقق من صحة تنفيذ خدمة مصنِّف النص، استخدم اختبارات مجموعة أدوات اختبار التوافق (CTS) في platform/cts/tests/tests/textclassifier/

تحسينات مصنِّف النص لإصدار Android 10

يقدّم Android 10 طريقتَين واجهة برمجة تطبيقات TextClassifier: suggestConversationActions أو detectLanguage تنشئ الطريقة suggestConversationActions ردودًا مقترَحة. والإجراءات من محادثة معيّنة وطريقة detectLanguage يحدد لغة النص.

يتم عرض ملفات النموذج لهذه الطرق أدناه ويمكن العثور عليها في external/libtextclassifier/models/

  • suggestionConversationActions: actions_suggestions.universal.model
  • detectLanguage: lang_id.model

لإصدار جهاز يتضمن أحدث ملفات الطُرز في صورة المصنع، عليك إجراء ما يلي: ما يلي:

  1. يمكنك جلب أحدث ملفات النماذج.

    external/libtextclassifier/models/update.sh
    
  2. إعادة تسمية الملفات التي تم تنزيلها لاستبدال الملفات الحالية
  3. تأكَّد من صحة الإعداد.
    adb shell dumpsys textclassification
    

    وهذا نموذج لمخرجات ذلك الأمر.

    TextClassifierImpl:
      Annotator model file(s):
        ModelFile { path=/etc/textclassifier/textclassifier.universal.model name=textclassifier.universal.model version=608 locales=und }
        ModelFile { path=/etc/textclassifier/textclassifier.en.model name=textclassifier.en.model version=608 locales=en }
      LangID model file(s):
        ModelFile { path=/etc/textclassifier/lang_id.model name=lang_id.model version=0 locales=und }
      Actions model file(s):
        ModelFile { path=/etc/textclassifier/actions_suggestions.universal.model name=actions_suggestions.universal.model version=0 locales=und }
    

تحسينات مصنِّف النص لإصدار Android 9

وسّع Android 9 النص تقديم إطار عمل التصنيف في Android 8.1 مع النص الجديد خدمة المصنِّف. إنّ خدمة مصنِّف النص هي الطريقة التي ننصح بها المصنّعون الأصليون للأجهزة. بإتاحة نظام تصنيف النصوص. يمكن لخدمة مصنف النص جزءًا من أي حزمة APK خاصة بالنظام ويمكن تحديثها عند الضرورة

يتضمّن Android 9 أداة تصنيف تلقائية للنص تنفيذ الخدمة ( TextClassifierImpl) التي يتم استخدامها ما لم تستبدلها بـ خدمة مصنِّف النص المخصّص التنفيذ.

تنفيذ خدمة مصنِّف نص مخصّص

توضّح الأقسام التالية كيفية تنفيذ مصنِّف نص مخصّص. الخدمة التي تطوّرها

تمديد android.service.textclassifier.TextClassifierService

public final class TextClassifierServiceImpl
        extends TextClassifierService {

    // Returns TextClassifierImpl.
    private final TextClassifier tc = getLocalTextClassifier();

    @Override
    public void onSuggestSelection(
            @Nullable TextClassificationSessionId sessionId,
            @NonNull TextSelection.Request request,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextSelection> callback) {
        CompletableFuture.supplyAsync(
                () -> tc.suggestSelection(request))
                .thenAccept(r -> callback.onSuccess(r));
    }

    @Override
    public void onClassifyText(
            @Nullable TextClassificationSessionId sessionId,
		@NonNull TextClassification.Request request,
		@NonNull CancellationSignal cancellationSignal,
		@NonNull Callback<TextClassification> callback) {
        ...
    }

    @Override
    public void onGenerateLinks(
            @Nullable TextClassificationSessionId sessionId,
            @NonNull TextLinks.Request request,
            @NonNull CancellationSignal cancellationSignal,
            @NonNull Callback<TextLinks> callback) {
        ...
    }
    ...
}

تحديد الخدمة في بيان Android

[AndroidManifest.xml]

<service android:name=".TextClassifierServiceImpl"
  android:permission="android.permission.BIND_TEXTCLASSIFIER_SERVICE">
    <intent-filter>
      <action android:name=
        "android.service.textclassifier.TextClassifierService"/>
    </intent-filter>
</service>

ملاحظة: يجب أن تتطلب الخدمة إذن android.permission.BIND_TEXTCLASSIFIER_SERVICE ويجب تحديد هدف واحد (android.service.textclassifier.TextClassifierService) اتخاذ القرار.

ضبط خدمة مصنِّف النص التلقائي للنظام في تراكب الإعدادات

[config.xml]

<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>

تضمين خدمة مصنِّف النص في صورة النظام

يمكن أن تكون خدمة مصنِّف النص المخصّص عبارة عن حِزمة APK مستقلة تم إنشاؤها في صورة النظام أو جزء من حزمة APK أخرى للنظام. يستخدم النظام PackageManager.MATCH_SYSTEM_ONLY لحل الخدمة.

الاختبار

يمكنك إجراء الاختبارات في android.view.textclassifier.cts.

تغييرات أخرى في تصنيف النصوص في Android 9

راجع فحص وحدات اللغة المثبَّتة

ملفات طراز Android 9 غير متوافقة مع ملفات طراز Android 8.x

تحتوي ملفات طُرز Android 9 على نمط التسمية: texclassifier.[language-code].model (على سبيل المثال، textclassifier.en.model) بدلاً من textclassifier.smartselection.en.model في الإصدار Android 8.x.

الحصول على أحدث ملفات نماذج تصنيف النص

للحصول على أحدث النماذج، يمكن تشغيل النص البرمجي التالي، وهو تعمل على تحديث نماذج TextClassifier في شجرة المصدر:

external/libtextclassifier/native/models/update.sh

مصنِّف النص في الإصدار 8.1 من Android

طرح Android 8.1 واجهة برمجة تطبيقات TextClassfier لتنفيذ النصوص الفئات.

TextClassificationManager tcm =
    context.getSystemService(TextClassificationManager.class);
TextClassifier classifier = tcm.getTextClassifier();
TextSelection selection = classifier.suggestSelection(...);
TextClassification classification = classifier.classifyText(...);

يمكن للمطوّرين ضبط مصنِّف نص مخصّص:

tcm.setTextClassifier(customTextClassifier);

ولكن إذا ضبط مطوِّر التطبيقات مصنِّف النص على null، فسيبدأ النظام سيتم عرض مصنِّف النص التلقائي لـ getTextClassifier().

يمكنك الاطّلاع على android.view.textclassifier.TextClassifierImpl.

يستخدم كل من TextView و WebView ميزة TextClassifier للاختيار الذكي والنص الذكي مشاركة الميزات.

استخدام مصنِّف النص

الشكل 1. استخدام "أداة تصنيف النص"

نماذج الشبكة العصبونية في أداة تصنيف النص

يضم المشروع المفتوح المصدر لنظام Android (AOSP) عددًا من الشبكات العصبونية لتصنيف النص. يتم تدريب كل ملف نموذجي على لغة واحدة. يمكنك تثبيت أي مجموعة من النماذج. يتم تحديد النماذج في:

external/libtextclassifier/Android.mk

تثبيت اللغة مسبقًا نماذج على الأجهزة

يمكنك تحديد مجموعة من النماذج اللغوية وتثبيتها على جهاز:

# -----------------------
# Smart Selection bundles
# -----------------------

include $(CLEAR_VARS)
LOCAL_MODULE           := textclassifier.smartselection.bundle1
LOCAL_REQUIRED_MODULES := textclassifier.smartselection.en.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.es.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.de.model
LOCAL_REQUIRED_MODULES += textclassifier.smartselection.fr.model
include $(BUILD_STATIC_LIBRARY)

مثلاً، في device/google/marlin/device-common.mk.

# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
    textclassifier.smartselection.bundle1

فحص اللغة المثبَّتة الوحدات

استخدِم ADB لسرد الملفات في الدليل:

$ adb shell ls -l /etc/textclassifier
-rw-r--r-- 1 root root ... textclassifier.smartselection.de.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.en.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.es.model
-rw-r--r-- 1 root root ... textclassifier.smartselection.fr.model

تعديلات النموذج

يمكن تحديث النماذج إما من خلال تضمين نموذج جديد كجزء من النظام أو الصورة، أو بشكل ديناميكي من خلال وجود مكون نظام يشغل تحديث من خلال نظام API ACTION_UPDATE_SMART_SELECTION والنية. من خلال بث هدف واجهة برمجة التطبيقات للنظام، يتمكن إطار العمل من تحديث النموذج اللغوي للغة المحددة حاليًا. النماذج نفسها تحتوي على اللغة المعتمدة ورقم إصدار بحيث يمكنك الوصول إلى الأحدث استخدام النموذج.

لذلك، لن تحتاج إلى تحميل نماذج لجميع اللغات مسبقًا لأنّه يمكن إضافتها. لاحقًا. إذا لم يتم العثور على ملف نموذج للغة المحددة، يتم تصنيف النص وتقوم بإرجاع قيم no-op.

اختبارات مجموعة أدوات اختبار التوافق

يمكن العثور على اختبارات "مجموعة أدوات اختبار التوافق مع Android" (CTS) المرتبطة في:

cts/tests/tests/view/src/android/view/textclassifier/cts/TextClassificationManagerTest.java

cts/tests/tests/widget/src/android/widget/cts/TextViewTest.java

  • testSmartSelection
  • testSmartSelection_dragSelection
  • testSmartSelection_resetSelection