Metin Sınıflandırıcı görevi, metinleri tanımlanmış bir dizi kategori halinde sınıflandırmanıza olanak tanır. örnek olarak verilebilir. Kategoriler, Google Haritalar'daki ve bu modelin nasıl eğitildiğine de değineceğiz. Bu talimatlar size iOS uygulamalarında Metin Sınıflandırıcı'nın nasıl kullanılacağını inceleyeceğiz. Bu kılavuzlarda açıklanan kod örneği talimatları şu adreste bulabilirsiniz: GitHub'a gidin.
Bu Web sayfasını görüntüleyerek bu görevin nasıl yerine getirildiğini demo'ya gidin. Örneğin, özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış.
Kod örneği
MediaPipe Tasks örnek kodu, bir Metin Sınıflandırıcı'nın temel uygulamasıdır uygulamasını indirin.
Uygulamayı kendi iOS uygulamanız için bir başlangıç noktası olarak kullanabilir veya buna başvurabilirsiniz mevcut bir uygulamada değişiklik yaparken. Daha fazla bilgi için Metin Sınıflandırıcı örnek koduna açık GitHub'a gidin.
Kodu indirme
Aşağıdaki talimatlarda, örneğin yerel bir kopyasını nasıl oluşturacağınız gösterilmektedir kodu oluşturmak için git komut satırı aracını kullanın.
Ö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 ödeme yöntemini kullanacak şekilde yapılandırın. Böylece, yalnızca Metin Sınıflandırıcı örnek uygulamasına ilişkin dosyalar:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
Örnek kodun yerel sürümünü oluşturduktan sonra, MediaPipe görev kitaplığını, Xcode'u kullanarak projeyi açın ve uygulamayı çalıştırın. Örneğin, iOS için Kurulum Kılavuzu'na bakın.
Temel bileşenler
Aşağıdaki dosyalarda Metin Sınıflandırıcı örneği için önemli bir kod bulunmaktadır uygulama:
- TextClassifierHelper.swift: Metin sınıflandırıcıyı başlatır ve model seçimini işler.
- ViewController.swift: Kullanıcı arayüzünü uygular ve sonuçları biçimlendirir.
Kurulum
Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili Metin Sınıflandırıcı'yı kullanmak için projeleri kodlayın. platform sürümü de dahil olmak üzere MediaPipe görevlerini kullanmaya yönelik geliştirme ortamı iOS için kurulum kılavuzuna bakın.
Bağımlılıklar
Metin Sınıflandırıcı, yüklenmesi gereken MediaPipeTasksText
kitaplığını kullanır
CocoaPods kullanıyor. 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 bkz. CocoaPods
kurulum kılavuzuna başvurun.
Uygulamanız için gerekli kapsülleri içeren bir Podfile
oluşturma talimatlarına
için
CocoaPods'da bulabilirsiniz.
Aşağıdaki kodu kullanarak MediaPipeTasksText kapsülünü Podfile
içine ekleyin:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
Uygulamanız birim test hedefleri içeriyorsa
iOS'i kurma hakkında daha fazla bilgi edinin.
Podfile
cihazınız.
Model
MediaPipe Metin Sınıflandırıcı görevi, uyumlu olan ve eğitilmiş bir model gerektiriyor karar veriyorum. Mevcut eğitilmiş modeller hakkında daha fazla bilgi için Metin Sınıflandırıcı, göreve genel bakış için bkz. Modeller bölümünü inceleyin.
Bir model seçip indirin ve Xcode'u kullanarak bu modeli proje dizininize ekleyin. Xcode projenize dosya eklemeyle ilgili talimatlar için bkz. Xcode'daki dosyalar ve klasörler inceleyebilirsiniz.
Modelin yolunu belirtmek için BaseOptions.modelAssetPath
özelliğini kullanın
daha fazla bilgi edineceksiniz. Kod örneği için sonraki bölüme bakın.
Görevi oluşturma
Metin Sınıflandırıcı görevini, başlatıcılardan birini çağırarak oluşturabilirsiniz. İlgili içeriği oluşturmak için kullanılan
TextClassifier(options:)
başlatıcı, yapılandırma için değerleri ayarlar
seçenekleri vardır.
Özelleştirilmiş yapılandırmayla başlatılan bir Metin Sınıflandırıcı'ya ihtiyacınız yoksa
seçeneklerini görmek isterseniz TextClassifier(modelPath:)
başlatıcıyı kullanarak
Varsayılan seçeneklerle Metin Sınıflandırıcı. Yapılandırma hakkında daha fazla bilgi için
Yapılandırmaya Genel Bakış bölümüne göz atın.
Aşağıdaki kod, bu görevin nasıl oluşturulacağını ve yapılandırılacağını gösterir.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
Yapılandırma seçenekleri
Bu görev, iOS uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
displayNamesLocale |
görev modelinin meta verileri (varsa). Şunun için varsayılan: en
İngilizce. Özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
TensorFlow Lite Metadata Writer API'yi kullanarak
| Yerel ayar kodu | en |
maxResults |
İsteğe bağlı maksimum puanlı sınıflandırma sonucu sayısını şu değere ayarlar: dön. < 0 ise tüm mevcut sonuçlar döndürülür. | Pozitif sayılar | -1 |
scoreThreshold |
Şu kriterde sağlanan tahmini geçersiz kılan bir tahmin puanı eşiğini belirler: model meta verileri (varsa). Bu değerin altındaki sonuçlar reddedilir. | Herhangi bir kayan nokta | Ayarlanmadı |
categoryAllowlist |
İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse
kategori adı bu kümede bulunmayan sınıflandırma sonuçları
filtrelendi. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek categoryDenylist ile birlikte kullanılamaz ve
her ikisi de hataya neden olur. |
Tüm dizeler | Ayarlanmadı |
categoryDenylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Eğer
Boş olmayan, kategori adı bu kümede bulunan sınıflandırma sonuçları filtrelenir
çıkar. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek birlikte
hariç tutmanın yanı sıra her iki sonucun da hatalı olarak kullanılmasıdır.categoryAllowlist |
Tüm dizeler | Ayarlanmadı |
Verileri hazırlama
Metin Sınıflandırıcı metin verileriyle çalışır. Görev, veri girişini işler ön işleme dahil edilir.
Tüm ön işlemler, classify(text:)
işlevi içinde gerçekleştirilir. Hayır
giriş metninin önceden ek olarak işlenmesi gerekir.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
Görevi çalıştırma
Metin Sınıflandırıcı'yı çalıştırmak için classify(text:)
yöntemini kullanın. Metin Sınıflandırıcı
girilen metin için olası kategorileri döndürür.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
Not: Görev, çıkarım çalıştırmayı tamamlayana kadar mevcut iş parçacığını engeller olduğunu görebilirsiniz. Mevcut iş parçacığının engellenmesini önlemek için işlemeyi iOS kullanarak arka plan iş parçacığı Sevkiyat veya NSOperation çerçeveleri.
Sonuçları işleme ve görüntüleme
Çıkarım çalıştırıldığında, Metin Sınıflandırıcı görevi bir TextClassifierResult
döndürür.
nesne (giriş metni için olası kategorilerin listesini içerir). İlgili içeriği oluşturmak için kullanılan
kategoriler, kullandığınız modele göre tanımlanır. Bu nedenle, farklı kategoriler
kullanabilir, farklı bir model seçebilir veya mevcut modeli yeniden eğitebilirsiniz.
Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
Bu sonuç, giriş metninde BERT sınıflandırıcı çalıştırılarak elde edilmiştir:
"an imperfect but overall entertaining mystery"
.
İlgili içeriği oluşturmak için kullanılan ViewController.swift dosyası, algılama sonuçlarının nasıl görüntüleneceğini gösterir pek bir önemi yok.