הכלי לסיווג טקסט משתמש בטכניקות של למידת מכונה כדי לעזור למפתחים לסווג טקסט.
מסווג טקסט בגרסת Android 11
ב-Android 11 חדש: ברירת מחדל שניתן לעדכן
של שירות סיווג הטקסט
מודול ExtServices. במכשירים עם Android 11.
ומעלה,
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/
שיפורים במסווג טקסט בגרסת Android 10
ב-Android 10 מוצגות שתי שיטות
ממשק API של TextClassifier:
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 עם הטקסט החדש על שירות הסיווג שלנו. השירות של מסווג הטקסט הוא הדרך המומלצת ליצרני ציוד מקורי (OEM) כדי לספק תמיכה במערכת לסיווג טקסט. שירות סיווג הטקסט יכול להיות חלק מ-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 לבחירה חכמה ולטקסט חכם לשתף תכונות.
![שימוש במסווג טקסט](https://source.android.com/static/docs/core/display/images/textclassifier.png?authuser=2&hl=he)
איור 1. שימוש ב-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
בכוונה טובה. שידור ה-Intent של ה-API של המערכת מאפשר ל-framework:
מעדכנים את מודל השפה של השפה שמוגדרת כרגע. המודלים עצמם
לכלול את השפה הנתמכת ואת מספר הגרסה, כדי שהמחרוזת
שבו נעשה שימוש.
כך שאין צורך לטעון מראש מודלים לכל השפות, כי ניתן להוסיף אותן מאוחר יותר. אם לא נמצא קובץ מודל בשפה שצוינה, סיווג הטקסט מחזירה ערכי no-op.
בדיקות של החבילה לבדיקת תאימות
ניתן למצוא את הבדיקות המשויכות של חבילת בדיקת התאימות ל-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