מסווג טקסט משתמש בטכניקות למידת מכונה כדי לעזור למפתחים לסווג טקסט.
סיווג טקסט לשחרור אנדרואיד 11
אנדרואיד 11 מציגה יישום ברירת מחדל שניתן לעדכן של שירות סיווג הטקסט במודול ExtServices . במכשירים המריצים אנדרואיד 11 ומעלה, השיטה getTextClassifier()
מחזירה את מימוש ברירת המחדל הזה במודול ExtServices. מומלץ ליצרני התקנים להשתמש ביישום זה של TextClassifierService
מכיוון שניתן לעדכן אותו באמצעות עדכוני OTA Mainline.
אנדרואיד 11 גם מסירה את יישום ברירת המחדל של סיווג הטקסט המקומי שהוצג בעבר באנדרואיד 8.1 . כתוצאה מכך, getLocalTextClassifier()
מחזירה מסווג טקסט NO_OP
. במקום היישום המקומי, עליך להשתמש בשיטת getDefaultTextClassifierImplementation()
.
עבור יצרני מכשירים שעשויים לרצות להשתמש באלגוריתמים משלהם לסיווג טקסט, הם יכולים ליישם שירות סיווג טקסט מותאם אישית על ידי ציון config_defaultTextClassifierPackage
בקובץ config.xml
. אם תצורה זו לא צוינה, נעשה שימוש ביישום מערכת ברירת המחדל. יישומים מותאמים אישית יכולים לקבל מופע של מימוש ברירת המחדל על ידי קריאה ל- TextClassifierService.getDefaultTextClassifierImplementation(Context)
. למידע נוסף, ראה הטמעת שירות סיווג טקסט מותאם אישית .
בדיקה
כדי לאמת את היישום שלך של שירות מסווג הטקסט, השתמש במבחני חבילת בדיקת התאימות (CTS) platform/cts/tests/tests/textclassifier/
.
שיפורים בסיווג טקסט של אנדרואיד 10
אנדרואיד 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
אנדרואיד 9 הרחיבה את מסגרת סיווג הטקסט שהוצגה באנדרואיד 8.1 עם שירות סיווג הטקסט החדש. שירות סיווג הטקסט הוא הדרך המומלצת עבור יצרני OEM לספק תמיכה במערכת סיווג טקסט. שירות סיווג הטקסט יכול להיות חלק מכל APK של מערכת וניתן לעדכן אותו בעת הצורך.
אנדרואיד 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) { ... } ... }
הגדר את השירות במניפסט של אנדרואיד
[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
.
שינויים אחרים בסיווג טקסט באנדרואיד 9
עיין בבדיקת מודולי שפה מותקנים .
קבצי דגם אנדרואיד 9 אינם תואמים לקבצי דגם אנדרואיד 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
אנדרואיד 8.1 הציגה את ה-API של 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 לבחירה חכמה ותכונות שיתוף טקסט חכם.
TextClassifier מודלים neural-net
פרויקט הקוד הפתוח של אנדרואיד (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
. על ידי שידור כוונה זו של מערכת API, המסגרת מסוגלת לעדכן את מודל השפה של השפה המוגדרת כעת. הדגמים עצמם מכילים את השפה הנתמכת ומספר גרסה ולכן נעשה שימוש בדגם המתאים העדכני ביותר.
אז אתה לא צריך לטעון מראש מודלים עבור כל השפות כי ניתן להוסיף אותם מאוחר יותר. אם לא נמצא קובץ מודל עבור השפה שצוינה, סיווג טקסט מחזיר ערכי no-op.
בדיקות חבילת בדיקת תאימות
ניתן למצוא את הבדיקות המשויכות ל-Android Compatibility Test Suite (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