Pengklasifikasi teks menggunakan teknik pembelajaran mesin untuk membantu pengembang mengklasifikasikan teks.
Pengklasifikasi teks rilis Android 11
Android 11 memperkenalkan implementasi default layanan pengklasifikasi teks yang dapat diperbarui dalam modul ExtServices . Pada perangkat yang menjalankan Android 11 atau lebih tinggi, metode getTextClassifier()
mengembalikan implementasi default ini dalam modul ExtServices. Produsen perangkat disarankan untuk menggunakan implementasi TextClassifierService
ini karena dapat diperbarui melalui pembaruan Mainline OTA.
Android 11 juga menghapus implementasi default pengklasifikasi teks lokal yang sebelumnya diperkenalkan di Android 8.1 . Hasilnya, getLocalTextClassifier()
mengembalikan pengklasifikasi teks NO_OP
. Daripada menerapkan lokal, Anda sebaiknya menggunakan metode getDefaultTextClassifierImplementation()
.
Untuk produsen perangkat yang mungkin ingin menggunakan algoritme pengklasifikasian teksnya sendiri, mereka dapat menerapkan layanan pengklasifikasi teks khusus dengan menentukan config_defaultTextClassifierPackage
di file config.xml
. Jika konfigurasi ini tidak ditentukan, implementasi sistem default akan digunakan. Implementasi khusus bisa mendapatkan instance implementasi default dengan memanggil TextClassifierService.getDefaultTextClassifierImplementation(Context)
. Untuk informasi selengkapnya, lihat Menerapkan layanan pengklasifikasi teks khusus .
Pengujian
Untuk memvalidasi penerapan layanan pengklasifikasi teks, gunakan pengujian Compatibility Test Suite (CTS) di platform/cts/tests/tests/textclassifier/
.
Peningkatan pengklasifikasi teks rilis 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
mendeteksi bahasa teks.
File model untuk metode ini ditunjukkan 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 citra pabrik Anda, lakukan hal berikut:
Ambil file model terbaru.
external/libtextclassifier/models/update.sh
- Ganti nama file yang diunduh untuk menggantikan yang sudah ada.
- Verifikasi pengaturannya.
adb shell dumpsys textclassification
Ini adalah contoh output dari perintah itu.
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 pengklasifikasi teks rilis 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 disarankan bagi OEM untuk menyediakan dukungan sistem klasifikasi teks. Layanan pengklasifikasi teks dapat menjadi bagian dari APK sistem apa pun dan dapat diperbarui bila diperlukan.
Android 9 menyertakan implementasi layanan pengklasifikasi teks default ( TextClassifierImpl
) yang digunakan kecuali Anda menggantinya dengan implementasi layanan pengklasifikasi teks khusus.
Menerapkan layanan pengklasifikasi teks khusus
Bagian berikut menjelaskan cara menerapkan layanan pengklasifikasi teks kustom yang Anda kembangkan.
Perluas 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) { ... } ... }
Tentukan 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>
Perlu diperhatikan bahwa layanan ini harus memerlukan izin android.permission.BIND_TEXTCLASSIFIER_SERVICE
dan harus menentukan tindakan maksud android.service.textclassifier.TextClassifierService
.
Tetapkan layanan pengklasifikasi teks default sistem di hamparan konfigurasi
[ config.xml ]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
Bangun layanan pengklasifikasi teks ke dalam citra sistem
Layanan pengklasifikasi teks khusus Anda dapat berupa APK mandiri yang disertakan dalam image sistem atau bagian dari APK sistem lain. Sistem menggunakan PackageManager.MATCH_SYSTEM_ONLY
untuk menyelesaikan layanan.
Pengujian
Jalankan pengujian di android.view.textclassifier.cts
.
Perubahan klasifikasi teks lainnya di Android 9
Lihat Memeriksa modul bahasa yang terpasang .
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
) dan bukan textclassifier.smartselection.en.model
di Android 8.x.
Dapatkan file model klasifikasi teks terbaru
Untuk mendapatkan model terkini, skrip berikut dapat dijalankan, yang memperbarui model TextClassifier di pohon sumber:
external/libtextclassifier/native/models/update.sh
Pengklasifikasi teks rilis Android 8.1
Android 8.1 memperkenalkan TextClassfier API untuk mengimplementasikan klasifikasi teks.
TextClassificationManager tcm = context.getSystemService(TextClassificationManager.class); TextClassifier classifier = tcm.getTextClassifier(); TextSelection selection = classifier.suggestSelection(...); TextClassification classification = classifier.classifyText(...);
Pengembang dapat menyetel pengklasifikasi teks khusus:
tcm.setTextClassifier(customTextClassifier);
Namun jika pengembang aplikasi menyetel pengklasifikasi teks ke null
, pengklasifikasi teks default sistem akan dikembalikan 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 Sumber Terbuka Android (AOSP) menampilkan sejumlah model jaringan saraf untuk mengklasifikasikan teks. Setiap file model dilatih untuk satu bahasa. Anda dapat memasang kombinasi model apa pun. Model didefinisikan dalam:
external/libtextclassifier/Android.mk
Pra-instal model bahasa pada perangkat
Anda dapat menentukan sekumpulan 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, di device/google/marlin/device-common.mk
.
# TextClassifier smart selection model files PRODUCT_PACKAGES += \ textclassifier.smartselection.bundle1
Periksa modul bahasa yang diinstal
Gunakan ADB untuk membuat daftar file di 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
Pembaruan model
Model dapat diperbarui dengan memasukkan model baru sebagai bagian dari pembaruan citra sistem, atau secara dinamis dengan memiliki komponen sistem yang memicu pembaruan melalui maksud API ACTION_UPDATE_SMART_SELECTION
sistem. Dengan menyiarkan maksud API sistem ini, kerangka kerja dapat memperbarui model bahasa dari bahasa yang ditetapkan saat ini. Modelnya sendiri berisi bahasa yang didukung dan nomor versi sehingga model terbaru yang sesuai akan digunakan.
Jadi Anda tidak perlu memuat model untuk semua bahasa terlebih dahulu karena model tersebut dapat ditambahkan nanti. Jika tidak ada file model yang ditemukan untuk bahasa yang ditentukan, klasifikasi teks akan mengembalikan nilai tanpa pengoperasian.
Tes Rangkaian Tes Kompatibilitas
Tes Compatibility Test Suite (CTS) Android 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