Android için dil algılama kılavuzu

MediaPipe Dil Dedektörü görevi, bir metin parçasının dilini tanımlamanıza olanak tanır. Bu Talimatları, Android uygulamalarıyla Dil Algılayıcı'nın nasıl kullanılacağını göstermektedir. Kod bu talimatlarda açıklanan örnek şurada bulunabilir: GitHub'a gidin.

Bu görevi, demo. Özellikler, modeller ve yapılandırma seçenekleri hakkında daha fazla bilgi Bu görev hakkında daha fazla bilgi için Genel Bakış'ı inceleyin.

Kod örneği

Dil Dedektörü örnek kodu, bu işlevin görevi görebilir. Bu kod, görevi test edip kullanmaya başlamanıza yardımcı olur. kendi dil algılama özelliğinizi oluşturun. Web sitemiz g.co/newsinitiative/labs üzerinden Dil Algılayı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:

  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 seyrek ödeme yöntemini kullanacak şekilde yapılandırın, Dolayısıyla, yalnızca Dil Dedektörü ö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 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:

Kurulum

Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili ve Dil Dedektörü'nü kullanmak için özel olarak kod projeleri içerir. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı daha fazla bilgi için Android için kurulum kılavuzu.

Bağımlılıklar

Dil Algılayı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 Dil Dedektörü görevi bu görevi görebilir. Dil Dedektörü için eğitilmiş mevcut modeller hakkında daha fazla bilgi için göreve genel bakış Modeller bölümü.

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

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

ModelName parametresi içinde modelin yolunu belirtin.

Görevi oluşturma

Görevi oluşturmak için createFrom...() işlevlerinden birini kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan createFromOptions() işlevi, dil için yapılandırma seçeneklerini kabul eder tıklayın. Görevi, createFromFile() fabrikasını kullanarak da başlatabilirsiniz işlevini kullanın. createFromFile() işlevi, eğitilen model dosyasına göre düzenleyin. Görevleri yapılandırma 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.

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

Nasıl görev oluşturulacağına dair bir örneği kod örneğinde görebilirsiniz. LanguageDetectorHelper initDetector() 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
maxResults İsteğe bağlı maksimum puanlı dil tahmini sayısını dön. Bu değer sıfırdan küçükse tüm kullanılabilir 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 İsteğe bağlı, izin verilen dil kodlarının listesini ayarlar. Boş değilse dil kodu bu kümede olmayan dil tahminleri filtrelendi. Bu seçenek birlikte kullanılamaz categoryDenylist ve her iki sonucu da kullanmak hataya neden olur. Tüm dizeler Ayarlanmadı
categoryDenylist İzin verilmeyen dil kodlarının isteğe bağlı listesini ayarlar. Eğer Dil kodu bu kümede bulunan boş olmayan dil tahminleri filtrelenir çıkar. Bu seçenek categoryAllowlist ve kullanılması bir hatayla sonuçlanır. Tüm dizeler Ayarlanmadı

Verileri hazırlama

Dil Algılayıcı, metin (String) verileriyle çalışır. Görev, veri girişini işler ön işleme dahil edilir. Tümü ön işleme, detect() işlevi içinde işlenir. Herhangi bir giriş metninin ek ön işleme tabi tutulmasını sağlar.

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

Görevi çalıştırma

Dil Algılayıcı, girişi işlemek için LanguageDetector.detect() yöntemini kullanır ve metnin dilini tahmin etmek için kullanılır. Ayrı bir yürütme yöntemi kullanmanız gerekir. Android kullanıcısının engellenmesini önlemek amacıyla algılamayı yürütmek için kullanılan iş parçacığı uygulamanızla etkileşim kurun.

Aşağıdaki kod, görevle işlemin nasıl yürütüleceğini gösterir iş parçacığı modelini kullanır.

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

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

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

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

Dil Algılayıcı şu listeden oluşan bir LanguageDetectorResult çıkarır: ve bu tahminlerin olasılıkları. İlgili içeriği oluşturmak için kullanılan dil kategorileri modelde tanımlanmışsa göreve genel bakış Modeller bölümüne göz atın.

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

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

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

Kod örneğinde, sonuçların nasıl görüntüleneceğine dair bir örneği ResultsAdapter ve ViewHolder iç sınıf.