Tugas MediaPipe Text Embedder memungkinkan Anda membuat representasi numerik data teks untuk menangkap makna semantiknya. Petunjuk ini menampilkan cara menggunakan Penyemat Teks dengan aplikasi Android.
Untuk mengetahui informasi selengkapnya terkait kemampuan, model, dan opsi konfigurasi. tugas ini, lihat Ringkasan.
Contoh kode
Kode contoh Tugas MediaPipe adalah implementasi sederhana dari Text Embedder untuk Android. Contoh ini mengevaluasi kesamaan semantik antara dua teks, dan membutuhkan perangkat Android fisik atau Android emulator.
Anda dapat menggunakan aplikasi ini sebagai titik awal untuk aplikasi Android Anda sendiri, atau merujuk ke sana saat memodifikasi aplikasi yang ada. Kode contoh Penyemat Teks di-{i>host<i} di GitHub.
Mendownload kode
Petunjuk berikut menunjukkan cara membuat salinan lokal dari contoh kode 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 Anda untuk menggunakan checkout sparse, sehingga Anda memiliki
hanya file untuk aplikasi contoh Text Embedder:
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 petunjuk, lihat Panduan Penyiapan untuk Android.
Komponen utama
File berikut berisi kode penting untuk contoh sematan teks ini aplikasi:
- TextEmbedderHelper.kt: Melakukan inisialisasi sematan teks serta menangani pemilihan model dan delegasi.
- MainActivity.kt: Mengimplementasikan aplikasi dan merakit komponen antarmuka pengguna.
Penyiapan
Bagian ini menjelaskan langkah-langkah utama untuk menyiapkan lingkungan pengembangan dan membuat kode proyek secara khusus untuk menggunakan Text Embedder. Untuk informasi umum tentang menyiapkan lingkungan pengembangan untuk menggunakan tugas MediaPipe, termasuk persyaratan versi platform, lihat Panduan penyiapan untuk Android.
Dependensi
Text Embedder menggunakan library com.google.mediapipe:tasks-text
. Tambahkan ini
dependensi terhadap 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 Anda. Untuk informasi selengkapnya tentang model terlatih yang tersedia untuk Text Embedder, lihat ringkasan tugas bagian Model.
Pilih dan download model, lalu simpan dalam direktori project Anda:
<dev-project-root>/src/main/assets
Tentukan jalur model dalam parameter ModelAssetPath
. Di kolom
kode contoh, model ditentukan dalam fungsi setupTextEmbedder()
di
TextEmbedderHelper.kt
file:
Gunakan fungsi BaseOptions.Builder.setModelAssetPath()
untuk menentukan jalur
yang digunakan oleh model. Metode ini dirujuk dalam contoh kode di bagian berikutnya
bagian.
Membuat tugas
Anda dapat menggunakan salah satu fungsi createFrom...()
untuk membuat tugas. Tujuan
Fungsi createFromOptions()
menerima opsi konfigurasi untuk menyetel sematan
lainnya. Anda juga dapat menginisialisasi tugas menggunakan factory createFromFile()
. Fungsi createFromFile()
menerima jalur relatif atau absolut ke
file model yang telah dilatih. Untuk informasi selengkapnya mengenai 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 sematan teks dalam
fungsi setupTextEmbedder()
dalam
TextEmbedderHelper.kt
.
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut untuk aplikasi Android:
Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default |
---|---|---|---|
l2_normalize |
Menentukan apakah akan menormalisasi vektor fitur yang ditampilkan dengan norma L2. Gunakan opsi ini hanya jika model belum berisi L2_NORMALIZATION TFLite Op. Dalam kebanyakan kasus, hal ini sudah terjadi dan Dengan demikian, normalisasi L2 dicapai melalui inferensi TFLite tanpa memerlukan untuk opsi ini. | Boolean |
False |
quantize |
Apakah embedding yang dikembalikan harus dikuantisasi ke byte melalui kuantisasi skalar. Embedding secara implisit diasumsikan sebagai norma unit oleh karena itu, setiap dimensi dijamin memiliki nilai dalam [-1.0, 1.0]. Gunakan opsi {i>l2_normalize<i} jika tidak demikian. | Boolean |
False |
Menyiapkan data
Text Embedder berfungsi dengan data teks (String
). Tugas ini menangani input data
pra-pemrosesan, termasuk tokenisasi dan pra-pemrosesan tensor. Semua
pra-pemrosesan ini akan ditangani dalam fungsi embed()
. Anda tidak perlu
teks input.
val inputText = "The input text to be embedded."
Menjalankan tugas
Penyemat Teks menggunakan fungsi embed
untuk memicu inferensi. Untuk teks
embedding, ini berarti mengembalikan 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 di bagian
TextEmbedderHelper.kt
.
Menangani dan menampilkan hasil
Setelah menjalankan inferensi, tugas Text Embedder akan menampilkan TextEmbedderResult
yang berisi daftar embedding (baik floating point maupun
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 kesamaan semantik dari dua embedding
Fungsi TextEmbedder.cosineSimilarity
. Lihat kode berikut sebagai contoh.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
Dalam kode contoh, fungsi TextEmbedder.cosineSimilarity()
dipanggil di bagian
TextEmbedderHelper.kt
.