Tugas Embedder Teks memungkinkan Anda membuat representasi numerik data teks untuk menangkap makna semantiknya. Petunjuk ini menunjukkan cara menggunakan Text Embedder di aplikasi iOS.
Anda dapat melihat cara kerja tugas ini dengan melihat Demo web ini. Untuk informasi selengkapnya tentang kemampuan, model, dan opsi konfigurasi tugas ini, lihat Ringkasan.
Contoh kode
Kode contoh untuk Text Embedder memberikan implementasi dasar aplikasi untuk iOS yang mengintegrasikan tugas ini. Contoh ini mengevaluasi kesamaan semantik antara dua bagian teks, dan memerlukan perangkat iOS fisik atau simulator iOS.
Anda dapat menggunakan aplikasi ini sebagai titik awal untuk aplikasi iOS Anda sendiri, atau merujuknya saat mengubah aplikasi yang ada. Anda dapat melihat kode contoh Text Embedder 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 Anda untuk menggunakan checkout jarang, sehingga Anda hanya memiliki file untuk aplikasi contoh Text Embedder:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/ios/
Setelah membuat versi lokal kode contoh, Anda dapat menginstal library tugas MediaPipe, membuka project menggunakan Xcode, dan menjalankan aplikasi. Untuk petunjuk, lihat Panduan Penyiapan untuk iOS.
Komponen utama
File berikut berisi kode penting untuk aplikasi contoh Text Embedder:
- TextEmbedderService.swift: Melakukan inisialisasi sematan teks dan menjalankan inferensi pada data input.
- ViewController.swift: Mengimplementasikan UI dan memformat hasilnya.
Penyiapan
Bagian ini menjelaskan langkah-langkah utama untuk menyiapkan lingkungan pengembangan dan project kode untuk menggunakan Penyematan Teks. Untuk informasi umum tentang cara menyiapkan lingkungan pengembangan untuk menggunakan tugas MediaPipe, termasuk persyaratan versi platform, lihat Panduan penyiapan untuk iOS.
Dependensi
Penyematan Teks menggunakan library MediaPipeTasksText
, yang harus diinstal
menggunakan CocoaPods. Library ini kompatibel dengan aplikasi Swift dan Objective-C,
dan tidak memerlukan penyiapan khusus bahasa tambahan.
Untuk petunjuk menginstal CocoaPods di macOS, lihat panduan penginstalan
CocoaPods.
Untuk mendapatkan petunjuk cara membuat Podfile
dengan pod yang diperlukan untuk aplikasi
Anda, lihat Menggunakan
CocoaPods.
Tambahkan pod MediaPipeTasksText
di Podfile
menggunakan kode berikut:
target 'MyTextEmbedderApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Jika aplikasi Anda menyertakan target pengujian unit, lihat Panduan Penyiapan untuk
iOS guna mendapatkan informasi tambahan tentang cara menyiapkan
Podfile
.
Model
Tugas MediaPipe Text Embedder memerlukan model terlatih yang kompatibel dengan tugas ini. Untuk mengetahui informasi selengkapnya tentang model terlatih yang tersedia untuk Text Embedder, lihat ringkasan tugas di bagian Model.
Pilih dan download model, lalu tambahkan ke direktori project Anda menggunakan Xcode. Untuk mengetahui petunjuk cara menambahkan file ke project Xcode, lihat Mengelola file dan folder di project Xcode.
Gunakan properti BaseOptions.modelAssetPath
untuk menentukan jalur ke model di app bundle Anda. Untuk contoh kode, lihat bagian berikutnya.
Membuat tugas
Anda dapat membuat tugas Penyematan Teks dengan memanggil salah satu penginisialisasinya. Penginisialisasi
TextEmbedder(options:)
menerima nilai untuk opsi
konfigurasi.
Jika tidak memerlukan Penyematan Teks yang diinisialisasi dengan opsi konfigurasi
kustom, Anda dapat menggunakan penginisialisasi TextEmbedder(modelPath:)
untuk membuat
Penyematan Teks dengan opsi default. Untuk informasi selengkapnya tentang opsi konfigurasi, lihat Ringkasan Konfigurasi.
Kode berikut menunjukkan cara mem-build dan mengonfigurasi tugas ini.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextEmbedderOptions()
options.baseOptions.modelAssetPath = modelPath
options.quantize = true
let textEmbedder = try TextEmbedder(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextEmbedderOptions *options = [[MPPTextEmbedderOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.quantize = YES;
MPPTextEmbedder *textEmbedder =
[[MPPTextEmbedder alloc] initWithOptions:options error:nil];
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut untuk aplikasi iOS:
Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default |
---|---|---|---|
l2_normalize |
Apakah akan melakukan normalisasi vektor fitur yang ditampilkan dengan norma L2. Gunakan opsi ini hanya jika model belum berisi Op L2_NORMALIZATION TFLite native. Dalam sebagian besar kasus, hal ini sudah menjadi kasus dan normalisasi L2 dicapai melalui inferensi TFLite tanpa memerlukan opsi ini. | Boolean |
False |
quantize |
Apakah penyematan yang ditampilkan harus dikuantifikasi ke byte melalui kuantisasi skalar. Secara implisit, penyematan diasumsikan sebagai unit-norm dan oleh karena itu, dimensi apa pun dijamin memiliki nilai dalam [-1,0, 1,0]. Gunakan opsi l2_normalize jika tidak demikian. | Boolean |
False |
Menjalankan tugas
Untuk menyematkan teks input dan mendapatkan vektor penyematan, Anda dapat menggunakan
metode embed(text:)
dari TextEmbedder
.
Swift
let result = try textEmbedder.embed(text: text)
Objective-C
MPPTextEmbedderResult *result = [textEmbedder embedText:text
error:nil];
Catatan: Tugas memblokir thread saat ini hingga selesai menjalankan inferensi pada teks. Untuk menghindari pemblokiran thread saat ini, jalankan pemrosesan di thread latar belakang menggunakan framework Dispatch atau NSOperation iOS. Jika aplikasi dibuat menggunakan Swift, Anda juga dapat menggunakan Swift Concurrency untuk eksekusi thread latar belakang.
Dalam kode contoh, metode embed(text:)
dipanggil dalam file
TextEmbedderService.swift.
Menangani dan menampilkan hasil
Setelah menjalankan inferensi, tugas Embedder Teks akan menampilkan objek TextEmbedderResult
yang berisi daftar penyematan (floating point atau
kuantisasi skalar) untuk teks input.
Berikut adalah 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 dari dua penyematan menggunakan metode TextEmbedder.cosineSimilarity
.
Swift
let similarity = try TextEmbedder.cosineSimilarity( embedding1: result.embeddingResult.embeddings[0], embedding2: otherResult.embeddingResult.embeddings[0])
Objective-C
NSNumber *similarity = [MPPTextEmbedder cosineSimilarityBetweenEmbedding1:result.embeddingResult.embeddings[0] andEmbedding2:otherResult.embeddingResult.embeddings[0] error:nil];
Dalam kode contoh, metode TextEmbedder.cosineSimilarity
dipanggil dalam file
TextEmbedderService.swift.