הכלי לסיווג טקסט משתמש בטכניקות של למידת מכונה כדי לעזור למפתחים לסווג טקסט.
מסווג טקסט בגרסת Android 11
ב-Android 11 נוספה הטמעה ברירת מחדל של שירות סיווג הטקסט במודול ExtServices, שניתן לעדכן אותה. במכשירים עם Android מגרסה 11 ואילך, השיטה
getTextClassifier()
מחזירה את הטמעת ברירת המחדל הזו במודול ExtServices.
ליצרני מכשירים מומלץ להשתמש ביישום הזה של TextClassifierService
, כי אפשר לעדכן אותו באמצעות עדכוני OTA של Mainline.
ב-Android 11 הוסר גם הטמעת ברירת המחדל של סיווג הטקסט המקומי, שהוצגה בעבר ב-
Android 8.1. כתוצאה מכך, הפונקציה getLocalTextClassifier()
מחזירה סיווג טקסט מסוג NO_OP
. במקום ההטמעה המקומית, צריך להשתמש ב-method
getDefaultTextClassifierImplementation()
.
יצרני מכשירים שרוצים להשתמש באלגוריתמים משלהם לסיווג טקסט יכולים להטמיע שירות מותאם אישית לסיווג טקסט על ידי ציון config_defaultTextClassifierPackage
בקובץ config.xml
. אם לא מציינים את ההגדרה הזו, המערכת משתמשת בהטמעת ברירת המחדל. הטמעות בהתאמה אישית יכולות לקבל מופע של ההטמעה שמוגדרת כברירת מחדל על ידי קריאה ל-
TextClassifierService.getDefaultTextClassifierImplementation(Context)
.
למידע נוסף, ראו
הטמעת שירות של סיווג טקסט בהתאמה אישית.
בדיקה
כדי לאמת את ההטמעה של שירות סיווג הטקסט, תוכלו להשתמש בבדיקות של חבילת בדיקות התאימות (CTS) ב-
platform/cts/tests/tests/textclassifier/
.
שיפורים במסווג טקסט בגרסת Android 10
ב-Android 10 יש שתי שיטות ל-TextClassifier API:
suggestConversationActions
ו-
detectLanguage
.
השיטה suggestConversationActions
יוצרת הצעות לתשובות ולפעולות מתוך שיחה נתונה, והשיטה detectLanguage
מזהה את שפת הטקסט.
קובצי המודל של ה-methods האלה מוצגים למטה והם נמצאים ב-
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
ולציין את פעולת Intent 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 הושקה ממשק ה-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
בפרויקט הקוד הפתוח של 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
של המערכת. שידור הכוונה הזו של ממשק ה-API של המערכת מאפשר למסגרת לעדכן את מודל השפה של השפה שמוגדרת כרגע. המודלים עצמם מכילים את השפה הנתמכת ומספר גרסה, כדי שנעשה שימוש במודל המתאים העדכני ביותר.
כך שאין צורך לטעון מראש מודלים לכל השפות כי אפשר להוסיף אותם מאוחר יותר. אם לא נמצא קובץ מודל לשפה שצוינה, סיווג הטקסט מחזיר ערכים של no-op.
בדיקות של חבילה לבדיקות תאימות (CTS)
הבדיקות המשויכות של חבילה לבדיקות תאימות (CTS) של Android נמצאות במקומות הבאים:
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