تستخدِم أداة تصنيف النصوص تقنيات تعلُّم الآلة لمساعدة المطوّرين في تصنيف النصوص.
أداة تصنيف النصوص في إصدار Android 11
يقدّم نظام التشغيل Android 11 تنفيذًا افتراضيًا قابلاً للتحديث
لخدمة تصنيف النصوص في
وحدة ExtServices. على الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android
أو إصدار أحدث، تعرض الطريقة
getTextClassifier()
هذا التنفيذ التلقائي في وحدة ExtServices.
ننصح مصنعي الأجهزة باستخدام هذا التنفيذ لسمة
TextClassifierService
لأنّه يمكن تحديثها من خلال تحديثات الإصدار Mainline OTA.
يزيل نظام التشغيل Android 11 أيضًا عملية التنفيذ التلقائية لميزة "تصنيف النصوص" على الجهاز والتي تم تقديمها سابقًا في
Android 8.1. ونتيجةً لذلك، تعرِض دالة
getLocalTextClassifier()
تصنيف نص NO_OP
. بدلاً من التنفيذ على الجهاز، يجب استخدام الأسلوب
getDefaultTextClassifierImplementation()
.
بالنسبة إلى المصنّعين الذين يريدون استخدام algoriths الخاصة بهم لتصنيف النصوص، يمكنهم تنفيذ خدمة مخصّصة لتصنيف النصوص من خلال تحديد config_defaultTextClassifierPackage
في ملف config.xml
. في حال عدم تحديد هذا الإعداد، يتم استخدام التنفيذ التلقائي للنظام. يمكن لعمليات التنفيذ المخصّصة الحصول على مثيل من عملية التنفيذ الافتراضية
عن طريق استدعاء
TextClassifierService.getDefaultTextClassifierImplementation(Context)
.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة
تنفيذ خدمة تصنيف نص مخصّصة.
الاختبار
للتحقّق من تنفيذ خدمة تصنيف النصوص، استخدِم اختبارات
مجموعة أدوات اختبار التوافق (CTS) في
platform/cts/tests/tests/textclassifier/
.
تحسينات على أداة تصنيف النصوص في الإصدار 10 من نظام التشغيل Android
يقدّم نظام التشغيل Android 10 طريقتَين لواجهة برمجة التطبيقات
TextClassifier API:
suggestConversationActions
و
detectLanguage
.
تُنشئ الطريقة suggestConversationActions
ردودًا
وإجراءات مقترَحة من محادثة معيّنة، وترصد الطريقة detectLanguage
لغة النص.
تظهر أدناه ملفات النماذج لهذه الطرق، ويمكن العثور عليها في
external/libtextclassifier/models/
.
suggestionConversationActions
:actions_suggestions.universal.model
detectLanguage
:lang_id.model
لطرح جهاز يتضمّن أحدث ملفات النماذج في صورة المصنع، عليك تنفيذ الخطوات التالية:
استرجاع أحدث ملفات النماذج
external/libtextclassifier/models/update.sh
- أعِد تسمية الملفات التي تم تنزيلها لاستبدال الملفات الحالية.
- تأكَّد من صحة الإعداد.
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 }
تحسينات على أداة تصنيف النصوص في الإصدار 9 من Android
وسّع نظام التشغيل 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 API لتنفيذ ميزة تصنيف النصوص.
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: استخدام TextClassifier
نماذج الشبكات العصبية لـ TextClassifier
يضمّ "المشروع المفتوح المصدر لنظام 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
النظام. من خلال بث نية واجهة برمجة تطبيقات النظام هذه، يتمكّن إطار العمل من تعديل نموذج اللغة للغة المحدّدة حاليًا. تحتوي النماذج نفسها
على اللغة المتاحة ورقم الإصدار لاستخدام أحدث نموذج مناسب.
وبالتالي، لا تحتاج إلى تحميل النماذج مسبقًا لكل اللغات لأنّه يمكن إضافتها لاحقًا. إذا لم يتم العثور على ملف نموذج للغة المحدّدة، تعرِض ميزة تصنيف النصوص قيمًا لا تؤدي إلى أي إجراء.
اختبارات مجموعة أدوات اختبار التوافق
يمكن العثور على اختبارات مجموعة أدوات اختبار التوافق مع 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