MediaPipe Metin Sınıflandırıcı görevi, metinleri tanımlanmış bir dizi kategoride sınıflandırmanızı sağlar. örnek olarak verilebilir. Kategoriler, modeli, ve modelin nasıl eğitildiğini anlamanıza yardımcı olur. Bu talimatlar, kullanıma sunuyoruz.
Bu görevi, demo. Modeller ve özellikler, yapılandırma seçeneklerini görmek için Genel Bakış'ı inceleyin.
Kod örneği
Metin Sınıflandırıcı için örnek kod, bu görevi görebilir. Bu kod, görevi test edip kullanmaya başlamanıza yardımcı olur. oluşturma hakkında daha fazla bilgi edineceksiniz. Web sitemiz g.co/newsinitiative/labs üzerinden Metin Sınıflandırıcı örnek kodu bulabilirsiniz.
Kodu indirme
Aşağıdaki talimatlarda, örneğin yerel bir kopyasını nasıl oluşturacağınız gösterilmektedir kodu öğrenmek için git sürüm kontrolü 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 ait dosyalara sahip olursunuz:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/android
Android Studio ile örnek kurulum ve çalıştırma talimatları için örnek kod kurulum talimatlarını Android için Kurulum Kılavuzu.
Temel bileşenler
Aşağıdaki dosyalarda metin sınıflandırması için örnek uygulama:
- TextClassifierHelper.kt - Metin sınıflandırıcıyı başlatır ve model seçimini işler.
- MainActivity.kt
TextClassifierHelper
veResultsAdapter
. - ResultsAdapter.kt - Sonuçları ele alır ve 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 özel olarak kod projeleri. Şu konularda genel bilgi için: MediaPipe Tasks'ı kullanmak için geliştirme ortamınızı ayarlayarak daha fazla bilgi için Android için kurulum kılavuzu.
Bağımlılıklar
Metin Sınıflandırıcı, com.google.mediapipe:tasks-text
kitaplıklarını kullanır. Bunu ekle
build.gradle
dosyasına bağımlılık.
Gerekli bağımlılıkları aşağıdaki kodu kullanarak içe aktarabilirsiniz:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Model
MediaPipe Metin Sınıflandırıcı görevi bu görevi görebilir. Metin Sınıflandırıcı için eğitilen modeller hakkında daha fazla bilgi almak üzere bkz. göreve genel bakış Modeller bölümü.
Bir model seçip indirin, ardından assets
projenizde depolayın
dizin:
<dev-project-root>/src/main/assets
Yolu belirtmek için BaseOptions.Builder.setModelAssetPath()
yöntemini kullanın
modelin tüm özellikleridir. Kod örneği için sonraki bölüme bakın.
Görevi oluşturma
Şu işlemler için Metin Sınıflandırıcı TextClassifier.createFrom...()
işlevlerinden birini kullanın:
çıkarımları yapmaya hazır hale getirebilirsiniz. createFromFile()
kullanabilirsiniz
işlevi, eğitilen model dosyasına giden göreli veya mutlak bir yolla Kod
aşağıdaki örnekte TextClassifier.createFromOptions()
işlevini kullanın. Kullanılabilir yapılandırma seçenekleri hakkında daha fazla bilgi edinmek için
Yapılandırma seçenekleri.
Aşağıdaki kod, bu görevin nasıl oluşturulacağını ve yapılandırılacağını gösterir.
// no directory path required if model file is in src/main/assets:
String currentModel = "text_classifier_model.tflite";
fun initClassifier() {
val baseOptionsBuilder = BaseOptions.builder()
.setModelAssetPath(currentModel)
try {
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder = TextClassifier.TextClassifierOptions.builder()
.setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textClassifier = TextClassifier.createFromOptions(context, options)
} catch (e: IllegalStateException) { // exception handling
}
}
Nasıl görev oluşturulacağına dair bir örneği kod örneğinde görebilirsiniz.
TextClassifierHelper
initClassifier()
sınıf işlevi.
Yapılandırma seçenekleri
Bu görev, Android uygulamaları için aşağıdaki yapılandırma seçeneklerini içerir:
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 (String
) verileriyle çalışır. Görev, veri girişini işler
ön işleme dahil edilir.
Tüm ön işlemler, classify()
işlevi içinde gerçekleştirilir. Gerek yok
ek ön işleme yöntemini kullanabilirsiniz.
String inputText = "The input text to be classified.";
Görevi çalıştırma
Metin Sınıflandırıcı, bir tablodaki anahtar kelimeleri çalıştırmak için TextClassifier.classify()
çıkarımlar. Sınıflandırmayı yürütmek için ayrı bir yürütme iş parçacığı kullan
Android kullanıcı arayüzü iş parçacığının uygulamanızla engellenmesini önlemek için.
Aşağıdaki kod, görevle işlemin nasıl yürütüleceğini gösterir iş parçacığı modelini kullanır.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = textClassifier.classify(text)
listener.onResult(results)
}
}
Kod örneğinde, bir görevin nasıl çalıştırılacağına dair bir örneği görebilirsiniz.
TextClassifierHelper
classify()
sınıf işlevi.
Sonuçları işleme ve görüntüleme
Metin Sınıflandırıcı, listeyi içeren bir TextClassifierResult
çıktısı verir
farklı olasılık seçeneklerini görebilirsiniz. Kategoriler
Bu nedenle, farklı kategoriler istiyorsanız farklı bir model seçin,
veya mevcut bir tanesini 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"
.
Kod örneğinde, sonuçların nasıl görüntüleneceğine dair bir örneği
ResultsAdapter
ve ViewHolder
iç sınıf.