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örevi çalışırken görebilirsiniz. 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, Text Embedder örnek uygulaması için önemli kodu 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ştirme aracı, CocoaPods kullanılarak yüklenmesi gereken MediaPipeTasksText
kitaplığını kullanır. Kitaplık hem Swift hem de Objective-C uygulamalarıyla uyumludur ve dile özel 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üllerle bir Podfile
oluşturma talimatlarını CocoaPods'u kullanma bölümünde bulabilirsiniz.
Aşağıdaki kodu kullanarak MediaPipeTasksText
kapsülünü 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 nasıl dosya ekleyeceğinizle ilgili talimatlar için Xcode projenizdeki dosyaları ve klasörleri yönetme bölümüne bakın.
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şturun
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ış bölümüne bakın.
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 modelde halihazırda doğal bir L2_NORMALIZATION TFLite Op içermiyorsa kullanın. Çoğu durumda bu durum geçerlidir ve L2 normalleştirmesi bu seçeneğe gerek kalmadan TFLite çıkarımıyla elde edilir. | 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. Bu durumda 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 çalıştırmayı tamamlayana kadar mevcut iş parçacığını 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 plan iş parçacığı yürütme için Swift eşzamanlılığı özelliğini 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
Çıkarım yapıldıktan sonra Metin Yerleştirme görevi, giriş metni için yerleştirmeler listesi (kayan nokta veya skaler olarak nicelenmiş) 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.