Tugas MediaPipe Text Embedder memungkinkan Anda membuat representasi numerik dari data teks untuk menangkap makna semantiknya. Petunjuk ini menunjukkan cara menggunakan Penyemat Teks dengan aplikasi Android.
Untuk mengetahui informasi selengkapnya tentang kemampuan, model, dan opsi konfigurasi tugas ini, lihat Ringkasan.
Contoh kode
Kode contoh Tugas MediaPipe adalah implementasi sederhana aplikasi Text Embedder untuk Android. Contoh ini mengevaluasi kemiripan semantik antara dua bagian teks, dan memerlukan perangkat Android fisik atau emulator Android.
Anda dapat menggunakan aplikasi sebagai titik awal untuk aplikasi Android Anda sendiri, atau merujuk ke aplikasi tersebut saat memodifikasi aplikasi yang sudah ada. Kode contoh Text Embedder dihosting di GitHub.
Mendownload kode
Petunjuk berikut menunjukkan cara membuat salinan lokal dari kode contoh menggunakan alat command line git.
Untuk mendownload kode contoh:
- Clone repositori git menggunakan perintah berikut:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Secara opsional, konfigurasikan instance git untuk menggunakan checkout sparse sehingga Anda hanya memiliki
file untuk aplikasi contoh Penyemat Teks:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Setelah membuat versi lokal dari kode contoh, Anda dapat mengimpor project ke Android Studio dan menjalankan aplikasi. Untuk mengetahui petunjuknya, lihat Panduan Penyiapan untuk Android.
Komponen utama
File berikut berisi kode penting untuk aplikasi contoh penyemat teks ini:
- TextEmbedderHelper.kt: Melakukan inisialisasi penyemat teks dan menangani pemilihan model dan delegasi.
- MainActivity.kt: Mengimplementasikan aplikasi dan menyusun komponen antarmuka pengguna.
Penyiapan
Bagian ini menjelaskan langkah-langkah utama untuk menyiapkan lingkungan pengembangan dan project kode khusus untuk menggunakan Text Embedder. Untuk informasi umum tentang menyiapkan lingkungan pengembangan Anda untuk menggunakan tugas MediaPipe, termasuk persyaratan versi platform, lihat Panduan penyiapan untuk Android.
Dependensi
Penyemat Teks menggunakan library com.google.mediapipe:tasks-text
. Tambahkan dependensi
ini ke file build.gradle
project pengembangan aplikasi Android Anda.
Anda dapat mengimpor dependensi yang diperlukan dengan kode berikut:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Model
Tugas MediaPipe Text Embedder memerlukan model terlatih yang kompatibel dengan tugas ini. Untuk mengetahui informasi selengkapnya tentang model terlatih yang tersedia untuk Penyemat Teks, lihat bagian Model ringkasan tugas.
Pilih dan download model, lalu simpan dalam direktori project:
<dev-project-root>/src/main/assets
Tentukan jalur model dalam parameter ModelAssetPath
. Dalam
kode contoh, model ditetapkan dalam fungsi setupTextEmbedder()
di file
TextEmbedderHelper.kt:
Gunakan fungsi BaseOptions.Builder.setModelAssetPath()
untuk menentukan jalur yang digunakan oleh model. Metode ini dirujuk dalam contoh kode di bagian
berikutnya.
Membuat tugas
Anda dapat menggunakan salah satu fungsi createFrom...()
untuk membuat tugas. Fungsi
createFromOptions()
menerima opsi konfigurasi untuk menetapkan opsi
penyemat. Anda juga dapat menginisialisasi tugas menggunakan fungsi factory
createFromFile()
. Fungsi createFromFile()
menerima jalur relatif atau absolut ke file model yang dilatih. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat
Opsi konfigurasi.
Kode berikut menunjukkan cara membangun dan mengonfigurasi tugas ini.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
Implementasi kode contoh menetapkan opsi penyemat teks dalam
fungsi setupTextEmbedder()
di
file
TextEmbedderHelper.kt.
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut untuk aplikasi Android:
Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default |
---|---|---|---|
l2_normalize |
Apakah akan menormalisasi vektor fitur yang ditampilkan dengan norma L2. Gunakan opsi ini hanya jika model belum berisi TFLite Op L2_NORMALIZATION native. Dalam kebanyakan kasus, hal ini sudah terjadi dan normalisasi L2 dicapai melalui inferensi TFLite tanpa memerlukan opsi ini. | Boolean |
False |
quantize |
Apakah embedding yang ditampilkan harus dikuantisasi ke byte melalui kuantisasi skalar. Embedding secara implisit diasumsikan sebagai norma satuan dan oleh karena itu, setiap dimensi dijamin memiliki nilai dalam [-1.0, 1.0]. Gunakan opsi l2_normalize jika tidak demikian. | Boolean |
False |
Menyiapkan data
Penyemat Teks berfungsi dengan data teks (String
). Tugas ini menangani pra-pemrosesan input data, termasuk tokenisasi dan pra-pemrosesan tensor. Semua
prapemrosesan ditangani dalam fungsi embed()
. Tidak perlu
pemrosesan teks input tambahan terlebih dahulu.
val inputText = "The input text to be embedded."
Menjalankan tugas
Penyemat Teks menggunakan fungsi embed
untuk memicu inferensi. Untuk penyematan
teks, ini berarti menampilkan vektor embedding untuk teks input.
Kode berikut menunjukkan cara mengeksekusi pemrosesan dengan model tugas.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
Dalam kode contoh, fungsi embed
dipanggil dalam file TextEmbedderHelper.kt.
Menangani dan menampilkan hasil
Setelah menjalankan inferensi, tugas Text Embedder akan menampilkan objek TextEmbedderResult
yang berisi daftar embedding (floating point atau
terkuantisasi skalar) untuk teks input.
Berikut ini contoh data output dari tugas ini:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Anda dapat membandingkan kemiripan semantik dua embedding menggunakan
fungsi TextEmbedder.cosineSimilarity
. Lihat kode berikut sebagai contoh.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
Dalam kode contoh, fungsi TextEmbedder.cosineSimilarity()
dipanggil dalam file TextEmbedderHelper.kt.