تستخدم أداة تصنيف النص تقنيات تعلُّم الآلة لمساعدة المطوّرين في تصنيف النصوص.
أداة تصنيف النص في إصدار Android 11
يقدّم نظام التشغيل Android 11 عملية تنفيذ تلقائية قابلة للتعديل لخدمة تصنيف النصوص في
وحدة ExtServices. على الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android أو إصدار أحدث، تعرض الطريقة
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 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
أضاف الإصدار 9 من نظام التشغيل Android إلى إطار عمل تصنيف النصوص الذي تم تقديمه في الإصدار 8.1 من نظام التشغيل Android خدمة جديدة لتصنيف النصوص. تُعدّ خدمة تصنيف النصوص الطريقة المقترَحة لمصنّعي المعدات الأصلية لتوفير دعم نظام تصنيف النصوص. يمكن أن تكون خدمة تصنيف النصوص جزءًا من أي حزمة APK للنظام، ويمكن تحديثها عند الضرورة.
يتضمّن نظام التشغيل Android 9 عملية تنفيذ تلقائية لخدمة تصنيف النصوص
(
TextClassifierImpl
) يتم استخدامها ما لم تستبدلها بعملية تنفيذ مخصّصة لخدمة تصنيف النصوص.
تنفيذ خدمة مخصّصة لتصنيف النصوص
توضّح الأقسام التالية كيفية تنفيذ خدمة مصنّف نصوص مخصّصة تطوّرها بنفسك.
Extend 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
النظام. ومن خلال بث هدف واجهة برمجة تطبيقات النظام هذا، يمكن للإطار تعديل نموذج اللغة المضبوطة حاليًا. تحتوي النماذج نفسها على اللغة المتوافقة ورقم الإصدار، ما يضمن استخدام أحدث نموذج مناسب.
لذلك، لست بحاجة إلى التحميل المُسبَق للنماذج الخاصة بجميع اللغات، لأنّه يمكن إضافتها لاحقًا. إذا لم يتم العثور على ملف نموذج للغة المحدّدة، لن تعرض ميزة تصنيف النصوص أي قيم.
اختبارات مجموعة أدوات اختبار التوافق
يمكن العثور على اختبارات مجموعة أدوات اختبار التوافق (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