Metin Yerleştirici görevi, metin verilerinin anlamsal anlamını yakalamak için sayısal bir temsili oluşturmanıza olanak tanır. Bu talimatlarda, iOS uygulamalarında metin yerleştiricinin nasıl kullanılacağı gösterilmektedir.
Bu web demosunu görüntüleyerek bu görevin nasıl yerine getirildiğini öğrenebilirsiniz. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel bakış bölümüne bakın.
Kod örneği
Metin Ekleyici'nin örnek kodu, bu görevi entegre eden iOS için bir uygulamanın temel uygulamasını sağlar. Örnek, iki metin parçası arasındaki anlamsal benzerlikleri değerlendirir ve fiziksel bir iOS cihazı veya iOS simülasyon aracı gerektirir.
Uygulamayı kendi iOS uygulamanız için başlangıç noktası olarak kullanabilir veya mevcut bir uygulamayı değiştirirken referans olarak kullanabilirsiniz. GitHub'daki metin yerleştirici örnek koduna bakabilirsiniz.
Kodu indirme
Aşağıdaki talimatlarda, git komut satırı aracını kullanarak örnek kodun yerel bir kopyasını nasıl oluşturacağınız gösterilmektedir.
Örnek kodu indirmek için:
Aşağıdaki komutu kullanarak git deposunu klonlayın:
git clone https://github.com/google-ai-edge/mediapipe-samples
İsteğe bağlı olarak, git örneğinizi seyrek kontrol kullanacak şekilde yapılandırın. Böylece, yalnızca metin yerleştirici örnek uygulamasının dosyalarına sahip olursunuz:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/ios/
Örnek kodun yerel bir sürümünü oluşturduktan sonra MediaPipe görev kitaplığını yükleyebilir, Xcode'u kullanarak projeyi açabilir ve uygulamayı çalıştırabilirsiniz. Talimatlar için iOS için Kurulum Kılavuzu'na bakın.
Temel bileşenler
Aşağıdaki dosyalar, metin yerleştirici örnek uygulamasının önemli kodunu içerir:
- TextEmbedderService.swift: Metin yerleştiriciyi başlatır ve giriş verilerinde çıkarım yapar.
- ViewController.swift: Kullanıcı arayüzünü uygular ve sonuçları biçimlendirir.
Kurulum
Bu bölümde, geliştirme ortamınızı ve kod projelerinizi metin yerleştiriciyi kullanacak şekilde ayarlamayla ilgili temel adımlar açıklanmaktadır. Platform sürümü gereksinimleri dahil olmak üzere, geliştirme ortamınızı MediaPipe görevlerini kullanmak için ayarlama hakkında genel bilgi için iOS için kurulum kılavuzuna bakın.
Bağımlılıklar
Metin Yerleştirici, CocoaPods kullanılarak yüklenmesi gereken MediaPipeTasksText
kitaplığını kullanır. Kitaplık hem Swift hem de Objective-C uygulamalarıyla uyumludur ve dile özgü ek kurulum gerektirmez.
CocoaPods'u macOS'e yükleme talimatları için CocoaPods yükleme kılavuzuna bakın.
Uygulamanız için gerekli kapsülleri içeren bir Podfile
oluşturma talimatları için CocoaPods'u kullanma başlıklı makaleyi inceleyin.
MediaPipeTasksText
kapsülünü, aşağıdaki kodu kullanarak Podfile
içine ekleyin:
target 'MyTextEmbedderApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Uygulamanız birim testi hedefleri içeriyorsa Podfile
'inizi ayarlama hakkında daha fazla bilgi için iOS için Kurulum Kılavuzu'na bakın.
Model
MediaPipe metin yerleştirme görevi, bu görevle uyumlu bir eğitimli model gerektirir. Metin Yerleştirme için kullanılabilen eğitilmiş modeller hakkında daha fazla bilgi için göreve genel bakış Modeller bölümüne bakın.
Bir model seçip indirin ve Xcode'u kullanarak proje dizininize ekleyin. Xcode projenize dosya eklemeyle ilgili talimatlar için Xcode projenizdeki dosya ve klasörleri yönetme başlıklı makaleyi inceleyin.
Uygulama paketinizde modelin yolunu belirtmek için BaseOptions.modelAssetPath
mülkünü kullanın. Kod örneği için sonraki bölüme bakın.
Görevi oluşturma
Metin Ekleyici görevini, başlatıcılarından birini çağırarak oluşturabilirsiniz. TextEmbedder(options:)
başlatıcısı, yapılandırma seçenekleri için değerleri kabul eder.
Özelleştirilmiş yapılandırma seçenekleriyle başlatılan bir Text Embedder'a ihtiyacınız yoksa, varsayılan seçeneklerle bir Text Embedder oluşturmak için TextEmbedder(modelPath:)
başlatıcıyı kullanabilirsiniz. Yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırmaya Genel Bakış başlıklı makaleyi inceleyin.
Aşağıdaki kodda, bu görevin nasıl oluşturulacağı ve yapılandırılacağı gösterilmektedir.
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];
Yapılandırma seçenekleri
Bu görevde, iOS uygulamaları için aşağıdaki yapılandırma seçenekleri bulunur:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
l2_normalize |
Döndürülen özellik vektörünün L2 normuyla normalleştirilip normalleştirilmeyeceği. Bu seçeneği yalnızca model zaten yerel bir L2_NORMALIZATION TFLite Op'u içermiyorsa kullanın. Çoğu durumda bu durum zaten böyledir ve böylece L2 normalleştirmesi, bu seçeneğe gerek olmadan TFLite çıkarımıyla gerçekleştirilir. | Boolean |
False |
quantize |
Döndürülen yerleştirmenin skaler kesme işlemiyle baytlara bölünüp bölünmeyeceği. Yerleştirmelerin dolaylı olarak birim-norm olarak kabul edildiği varsayılır. Bu nedenle, tüm boyutların [-1,0, 1,0] arasında bir değere sahip olması garanti edilir. Aksi takdirde l2_normalize seçeneğini kullanın. | Boolean |
False |
Görevi çalıştırma
Giriş metnini yerleştirmek ve gömme vektörlerini elde etmek için TextEmbedder
sınıfının embed(text:)
yöntemini kullanabilirsiniz.
Swift
let result = try textEmbedder.embed(text: text)
Objective-C
MPPTextEmbedderResult *result = [textEmbedder embedText:text
error:nil];
Not: Görev, metinde çıkarım işlemini tamamlayana kadar mevcut mesaj dizisini engeller. Mevcut iş parçacığının engellenmesini önlemek için iOS Dispatch veya NSOperation çerçevelerini kullanarak işlemeyi arka planda bir iş parçacığında yürütün. Uygulamanız Swift kullanılarak oluşturulduysa arka planda iş parçacığı yürütme için Swift Concurrency'i de kullanabilirsiniz.
Örnek kodda embed(text:)
yöntemi TextEmbedderService.swift dosyasında çağrılır.
Sonuçları işleme ve görüntüleme
Metin Yerleştirici görevi, çıkarım çalıştırıldığında giriş metni için yerleştirmelerin (kayan nokta veya skaler olarak kesirli) listesini içeren bir TextEmbedderResult
nesnesi döndürür.
Aşağıda, bu görevin çıkış verilerine örnek verilmiştir:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
TextEmbedder.cosineSimilarity
yöntemini kullanarak iki yerleştirmenin anlamsal benzerliğini karşılaştırabilirsiniz.
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];
Örnek kodda TextEmbedder.cosineSimilarity
yöntemi TextEmbedderService.swift dosyasında çağrılır.