Android için dil algılama kılavuzu

MediaPipe Dil Dedektörü görevi, bir metin parçasının dilini tanımlamanızı sağlar. Bu talimatlar, Dil Detektörü'nün Android uygulamalarıyla nasıl kullanılacağını gösterir. Bu talimatlarda açıklanan kod örneğine GitHub'dan ulaşabilirsiniz.

Demoyu izleyerek 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ış'a bakın.

Kod örneği

Dil Dedektörü için örnek kod, size referans olması açısından bu görevin basit bir uygulamasını sunar. Bu kod, bu görevi test etmenize ve kendi dil algılama özelliğinizi oluşturmaya başlamanıza yardımcı olur. Dil Dedektörü örnek koduna GitHub'da göz atabilirsiniz.

Kodu indirme

Aşağıdaki talimatlar, git sürüm kontrolü komut satırı aracını kullanarak örnek kodun yerel bir kopyasını nasıl oluşturacağınızı göstermektedir.

Örnek kodu indirmek için:

  1. Aşağıdaki komutu kullanarak git deposunu klonlayın:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. İsteğe bağlı olarak, git örneğinizi az ödeme yöntemini kullanacak şekilde yapılandırın. Böylece yalnızca Dil Algılayıcı örnek uygulamasına ait dosyalara sahip olursunuz:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Android Studio ile örnek oluşturma ve çalıştırma talimatları için Android için Kurulum Kılavuzu'nda yer alan örnek kod kurulumu talimatlarına bakın.

Temel bileşenler

Aşağıdaki dosyalar, metin sınıflandırma örnek uygulaması için önemli kodu içerir:

Kurulum

Bu bölümde geliştirme ortamınızı kurmanın temel adımları açıklanmaktadır. Projelerinizi özel olarak Dil Detektörü'nü kullanacak şekilde kodlayın. Platform sürümü gereksinimleri de dahil olmak üzere, MediaPipe görevlerini kullanmak amacıyla geliştirme ortamınızı ayarlama hakkında genel bilgiler için Android için kurulum kılavuzuna bakın.

Bağımlılıklar

Dil Algılayıcı, com.google.mediapipe:tasks-text kitaplıklarını kullanır. Bu bağımlılığı, Android uygulaması geliştirme projenizin build.gradle dosyasına ekleyin. Gerekli bağımlılıkları aşağıdaki kodu kullanarak içe aktarabilirsiniz:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

Model

MediaPipe Dil Dedektörü görevi, bu görevle uyumlu, eğitilmiş bir model gerektirir. Dil Algılayıcı için eğitilmiş modeller hakkında daha fazla bilgi almak isterseniz göreve genel bakış Modeller bölümüne bakın.

Modeli seçip indirin ve ardından proje dizininizde depolayın:

<dev-project-root>/src/main/assets

ModelName parametresinde modelin yolunu belirtin.

Görevi oluşturma

Görevi oluşturmak için createFrom...() işlevlerinden birini kullanabilirsiniz. createFromOptions() işlevi, dil algılayıcı için yapılandırma seçeneklerini kabul eder. Görevi, createFromFile() fabrika işlevini kullanarak da başlatabilirsiniz. createFromFile() işlevi, eğitilen model dosyasına giden göreli veya mutlak yolu kabul eder. Görevleri yapılandırma hakkında daha fazla bilgi edinmek için Yapılandırma seçenekleri bölümüne bakın.

Aşağıdaki kod bu görevin nasıl oluşturulacağını ve yapılandırılacağını gösterir.

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

Görev oluşturmayla ilgili bir örneği, kod örneği olan LanguageDetectorHelper sınıfı initDetector() işlevinde görebilirsiniz.

Yapılandırma seçenekleri

Bu görev, Android uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:

Seçenek Adı Açıklama Değer Aralığı Varsayılan Değer
maxResults İsteğe bağlı olarak, döndürülecek en yüksek puanlı dil tahmininin maksimum sayısını ayarlar. Bu değer sıfırdan küçükse mevcut tüm sonuçlar döndürülür. Pozitif sayılar -1
scoreThreshold Model meta verilerinde belirtilen eşiği (varsa) geçersiz kılan tahmin puanı eşiğini ayarlar. Bu değerin altındaki sonuçlar reddedilir. Tüm kayan Belirlenmedi
categoryAllowlist İzin verilen dil kodlarının isteğe bağlı listesini ayarlar. Boş değilse, dil kodu bu grupta yer almayan dil tahminleri filtrelenir. Bu seçenek categoryDenylist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. Herhangi bir dize Belirlenmedi
categoryDenylist İzin verilmeyen dil kodlarının isteğe bağlı listesini ayarlar. Boş değilse dil kodu bu kümede yer alan dil tahminleri filtrelenir. Bu seçenek, categoryAllowlist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. Herhangi bir dize Belirlenmedi

Verileri hazırlama

Dil Algılayıcı, metin (String) verileriyle çalışır. Görev, tokenizasyon ve tensör ön işlemesi dahil olmak üzere veri girişi ön işlemesini yürütür. Tüm ön işlemeler detect() işlevi içinde gerçekleştirilir. Giriş metninin önceden işlenmesine gerek yoktur.

String inputText = "Some input text for the language detector";

Görevi çalıştırma

Dil Algılayıcı, giriş metnini işlemek ve metnin dilini tahmin etmek için LanguageDetector.detect() yöntemini kullanır. Android kullanıcı arayüzü iş parçacığının uygulamanızla engellenmemesini istiyorsanız algılamayı yürütmek için ayrı bir yürütme iş parçacığı kullanmanız gerekir.

Aşağıdaki kod, ayrı bir yürütme iş parçacığı kullanarak işlemenin görev modeliyle nasıl yürütüleceğini gösterir.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

Bir görevin nasıl çalıştırılacağına dair bir örnek, kod örneği LanguageDetectorHelper sınıfı detect() işlevinde görebilirsiniz.

Sonuçları işleme ve görüntüleme

Dil Algılayıcı, dil tahminlerinin ve bu tahminlerin olasılıklarının listesini içeren bir LanguageDetectorResult üretir. Dil kategorileri modelde tanımlanır. Kullandığınız modelle ilgili ayrıntılar için göreve genel bakış Modeller bölümüne bakın.

Aşağıda, bu görevden alınan çıkış verilerinin bir örneği gösterilmektedir:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Bu sonuç, model şu giriş metninde çalıştırılarak elde edildi: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

Sonuçların nasıl gösterileceğini belirten bir örneği, kod örneği ResultsAdapter ve ViewHolder iç sınıfında görebilirsiniz.