Pengklasifikasi teks menggunakan teknik machine learning untuk membantu developer mengklasifikasikan teks.
Pengklasifikasi teks rilis Android 11
Android 11 memperkenalkan implementasi default
yang dapat diupdate dari layanan pengklasifikasi teks di
modul ExtServices. Pada perangkat yang menjalankan Android 11
atau yang lebih tinggi, metode
getTextClassifier()
akan menampilkan implementasi default ini di modul ExtServices.
Produsen perangkat direkomendasikan untuk menggunakan implementasi
TextClassifierService
ini karena dapat diupdate melalui update OTA
Mainline.
Android 11 juga menghapus penerapan default pengklasifikasi teks lokal
yang sebelumnya diperkenalkan di
Android 8.1. Akibatnya,
getLocalTextClassifier()
menampilkan pengklasifikasi teks NO_OP
. Sebagai ganti penerapan lokal, Anda harus menggunakan metode
getDefaultTextClassifierImplementation()
.
Bagi produsen perangkat yang mungkin ingin menggunakan algoritma
pengklasifikasi teks mereka sendiri, mereka dapat menerapkan layanan pengklasifikasi teks kustom dengan menentukan
config_defaultTextClassifierPackage
dalam file
config.xml
. Jika konfigurasi ini tidak ditentukan, implementasi sistem default
akan digunakan. Implementasi kustom dapat mendapatkan instance implementasi
default dengan memanggil
TextClassifierService.getDefaultTextClassifierImplementation(Context)
.
Untuk informasi selengkapnya, lihat
Menerapkan layanan pengklasifikasi teks kustom.
Pengujian
Untuk memvalidasi penerapan layanan pengklasifikasi teks, gunakan
pengujian Compatibility Test Suite (CTS) di
platform/cts/tests/tests/textclassifier/
.
Peningkatan rilis pengklasifikasi teks Android 10
Android 10 memperkenalkan dua metode ke
TextClassifier API:
suggestConversationActions
dan
detectLanguage
.
Metode suggestConversationActions
menghasilkan balasan
dan tindakan yang disarankan dari percakapan tertentu dan metode detectLanguage
akan mendeteksi bahasa teks.
File model untuk metode ini ditampilkan di bawah dan dapat ditemukan di
external/libtextclassifier/models/
.
suggestionConversationActions
:actions_suggestions.universal.model
detectLanguage
:lang_id.model
Untuk merilis perangkat dengan file model terbaru di image factory, lakukan hal berikut:
Ambil file model terbaru.
external/libtextclassifier/models/update.sh
- Ganti nama file yang didownload untuk mengganti nama file yang sudah ada.
- Verifikasi penyiapan.
adb shell dumpsys textclassification
Berikut adalah contoh output perintah tersebut.
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 }
Peningkatan rilis pengklasifikasi teks Android 9
Android 9 memperluas framework klasifikasi teks yang diperkenalkan di Android 8.1 dengan layanan pengklasifikasi teks baru. Layanan pengklasifikasi teks adalah cara yang direkomendasikan bagi OEM untuk memberikan dukungan sistem klasifikasi teks. Layanan pengklasifikasi teks dapat menjadi bagian dari APK sistem apa pun dan dapat diupdate jika diperlukan.
Android 9 menyertakan penerapan layanan pengklasifikasi teks
default (
TextClassifierImpl
) yang digunakan kecuali Anda menggantinya dengan
implementasi layanan pengklasifikasi teks
kustom.
Mengimplementasikan layanan pengklasifikasi teks kustom
Bagian berikut menjelaskan cara menerapkan layanan pengklasifikasi teks kustom yang Anda kembangkan.
Memperluas 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) { ... } ... }
Menentukan layanan dalam manifes 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>
Perhatikan bahwa layanan harus memerlukan
izin android.permission.BIND_TEXTCLASSIFIER_SERVICE
dan harus
menentukan
tindakan intent
android.service.textclassifier.TextClassifierService
.
Menetapkan layanan pengklasifikasi teks default sistem di overlay konfigurasi
[config.xml]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Mem-build layanan pengklasifikasi teks ke dalam image sistem
Layanan pengklasifikasi teks kustom Anda dapat berupa APK mandiri yang terintegrasi
ke dalam image sistem atau bagian dari APK sistem lainnya. Sistem menggunakan
PackageManager.MATCH_SYSTEM_ONLY
untuk me-resolve layanan.
Pengujian
Jalankan pengujian di android.view.textclassifier.cts
.
Perubahan klasifikasi teks lainnya di Android 9
Lihat Memeriksa modul bahasa yang diinstal.
File model Android 9 tidak kompatibel dengan file model Android 8.x.
File model Android 9 memiliki pola penamaan:
texclassifier.[language-code].model
(misalnya,
textclassifier.en.model
),
bukan textclassifier.smartselection.en.model
di Android 8.x.
Mendapatkan file model klasifikasi teks terbaru
Untuk mendapatkan model terbaru, skrip berikut dapat dijalankan, yang memperbarui model TextClassifier di hierarki sumber:
external/libtextclassifier/native/models/update.sh
Klasifikasi teks rilis Android 8.1
Android 8.1 memperkenalkan TextClassfier API untuk menerapkan klasifikasi teks.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Developer dapat menetapkan pengklasifikasi teks kustom:
tcm.setTextClassifier(customTextClassifier);
Namun, jika developer aplikasi menetapkan pengklasifikasi teks ke null
, pengklasifikasi teks
default sistem akan ditampilkan untuk getTextClassifier()
.
Lihat android.view.textclassifier.TextClassifierImpl
.
TextView dan WebView menggunakan TextClassifier untuk fitur pemilihan cerdas dan berbagi teks cerdas.
Model jaringan saraf TextClassifier
Proyek Open Source Android (AOSP) menampilkan sejumlah model jaringan neural untuk mengklasifikasikan teks. Setiap file model dilatih untuk satu bahasa. Anda dapat menginstal kombinasi model apa pun. Model ditentukan dalam:
external/libtextclassifier/Android.mk
Menginstal model bahasa di perangkat
Anda dapat menentukan paket model bahasa dan menginstalnya di perangkat:
# ----------------------- # 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)
Misalnya, dalam device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1
Memeriksa modul bahasa yang diinstal
Gunakan ADB untuk membuat daftar file dalam direktori:
$ 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
Update model
Model dapat diperbarui dengan menyertakan model baru sebagai bagian dari update
gambar sistem, atau secara dinamis dengan memiliki komponen sistem yang memicu
update melalui intent API ACTION_UPDATE_SMART_SELECTION
sistem. Dengan menyiarkan intent API sistem ini, framework dapat
memperbarui model bahasa dari bahasa yang saat ini ditetapkan. Model itu sendiri
berisi bahasa yang didukung dan nomor versi sehingga model terbaru yang sesuai
digunakan.
Jadi, Anda tidak perlu melakukan pramuat model untuk semua bahasa karena bahasa tersebut dapat ditambahkan nanti. Jika tidak ada file model yang ditemukan untuk bahasa yang ditentukan, klasifikasi teks akan menampilkan nilai tanpa pengoperasian.
Pengujian Compatibility Test Suite
Pengujian Android Compatibility Test Suite (CTS) terkait dapat ditemukan di:
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