تستخدِم أداة تصنيف النصوص تقنيات تعلُّم الآلة لمساعدة المطوّرين في تصنيف النصوص.
أداة تصنيف النصوص في إصدار Android 11
يقدّم نظام التشغيل Android 11 تنفيذًا افتراضيًا قابلاً للتحديث
لخدمة تصنيف النصوص في
وحدة ExtServices. على الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android
أو إصدار أحدث، تعرض الطريقة
getTextClassifier()
هذا التنفيذ التلقائي في وحدة ExtServices.
ننصح مصنعي الأجهزة باستخدام هذا التنفيذ لسمة
TextClassifierService
لأنّه يمكن تحديثه من خلال تحديثات OTA
التلقائية لنظام التشغيل Mainline.
يزيل نظام التشغيل Android 11 أيضًا ميزة "تصنيف النصوص"
المحلية التي تم تنفيذها تلقائيًا في الإصدار السابق
Android 8.1. ونتيجةً لذلك، تعرِض دالة
getLocalTextClassifier()
تصنيف نص NO_OP
. بدلاً من عملية التنفيذ المحلية، عليك استخدام الطريقة
getDefaultTextClassifierImplementation()
.
بالنسبة إلى الشركات المصنّعة للأجهزة التي قد تريد استخدام خوارزمياتها الخاصة لتصنيف الخوارزميات، يمكنها تنفيذ خدمة مصنِّف نص مخصّص من خلال تحديد 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 }
تحسينات مصنِّف النص لإصدار 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
تم تقديم واجهة برمجة التطبيقات TextClassfier في Android 8.1 لتنفيذ تصنيف النص.
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 لتوفير ميزتَي الاختيار الذكي ومشاركة النص الذكي.
نماذج الشبكة العصبونية في أداة تصنيف النص
يضمّ "المشروع المفتوح المصدر لنظام 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