Android için metin yerleştirme kılavuzu

MediaPipe Metin Yerleştirme görevi, kullanıcılara metin verilerinin sayısal bir temsilini anlamlarını yakalamaya çalışın. Bu talimatlarda, Android uygulamalarıyla Metin Yerleştirme.

Ö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

MediaPipe Tasks örnek kodu, bir Metin Yerleştirme aracının basit bir uygulamasıdır Android için uygulama. Bu örnek, iki grup arasındaki anlamsal benzerlikleri ve fiziksel bir Android cihaz ya da Android cihaz gerektirir emülatörü kullanın.

Uygulamayı kendi Android uygulamanız için başlangıç noktası olarak kullanabilir veya buna başvurabilirsiniz mevcut bir uygulamada değişiklik yaparken. Metin Yerleştirme örnek kodu şurada barındırılır: 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:

  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. Böylece, yalnızca Metin Yerleştirme örnek uygulamasına ilişkin dosyaları içerir:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_embedder/android
    

Örnek kodun yerel sürümünü oluşturduktan sonra projeyi içe aktarabilirsiniz. Android Studio'ya gidip uygulamayı çalıştırın. Talimatlar için bkz. Android.

Temel bileşenler

Aşağıdaki dosyalar, bu metin yerleştirme örneği için önemli kodu içeriyor uygulama:

  • TextEmbedderHelper.kt: Metin yerleştiriciyi başlatır, modeli ve seçim yetkisini işler.
  • MainActivity.kt: Uygulamayı uygular ve kullanıcı arayüzü bileşenlerini birleştirir.

Kurulum

Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili Metin Yerleştirme Aracı'nı kullanmak için özel olarak projeleri kodlayın. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı platform sürümü gereksinimleri hakkında daha fazla bilgi için Android.

Bağımlılıklar

Metin Yerleştirme aracı, 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 Yerleştirme görevi bu görevi görebilir. Metin Yerleştirme aracı için eğitilen modeller hakkında daha fazla bilgi için bkz. 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

ModelAssetPath parametresi içinde modelin yolunu belirtin. bu model aşağıdaki örnekteki setupTextEmbedder() işlevinde tanımlanır: TextEmbedderHelper.kt dosya:

Yolu belirtmek için BaseOptions.Builder.setModelAssetPath() işlevini kullanın modeli tarafından kullanılır. Bu yöntem, bölümüne ekleyin.

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, yerleştiriciyi ayarlamak için yapılandırma seçeneklerini kabul eder seçenekleri vardır. 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. Yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. 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.

val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
    TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)

Örnek kod uygulaması, setupTextEmbedder() fonksiyonu TextEmbedderHelper.kt dosyası olarak kaydedebilirsiniz.

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
l2_normalize Döndürülen özellik vektörünün L2 normuyla normalleştirilip normalleştirilmeyeceği. Bu seçeneği yalnızca model zaten yerel bir öğe içermiyorsa kullanın L2_NORMALIZATION TFLite Op. Çoğu durumda bu zaten böyledir Böylece L2 normalleştirmesi, herhangi bir gerek kalmadan TFLite çıkarımıyla gerçekleştirilir bu seçeneği belirleyin. Boolean False
quantize Döndürülen yerleştirmenin skaler nicelemedir. Yerleştirmelerin dolaylı olarak birim normları Bu nedenle, tüm boyutların [-1,0, 1,0] aralığında bir değere sahip olması garanti edilir. Tekliflerinizi otomatikleştirmek ve optimize etmek için l2_normalize seçeneğini kullanın. Boolean False

Verileri hazırlama

Metin Yerleştirme aracı, metin (String) verileriyle çalışır. Görev, veri girişini işler ön işleme dahil edilir. Tümü ön işleme, embed() işlevi içinde işlenir. Herhangi bir giriş metninin ek ön işleme tabi tutulmasını sağlar.

val inputText = "The input text to be embedded."

Görevi çalıştırma

Metin Yerleştirme aracı, çıkarımları tetiklemek için embed işlevini kullanır. Metin için yerleştirme, giriş metni için yerleştirme vektörlerinin döndürülmesi anlamına gelir.

Aşağıdaki kod, işlemin görev modeliyle nasıl yürütüldüğünü gösterir.

textEmbedder?.let {
    val firstEmbed =
        it.embed(firstText).embeddingResult().embeddings().first()
    val secondEmbed =
        it.embed(secondText).embeddingResult().embeddings().first()
    ...
}

Örnek kodda embed işlevi TextEmbedderHelper.kt dosyası olarak kaydedebilirsiniz.

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

Çıkarım çalıştırıldığında, Metin Yerleştirme görevi bir TextEmbedderResult döndürüyor yerleştirme listesi içeren nesne (kayan nokta veya skaler olarak ölçülmüş) girin.

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

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

İki yerleştirmenin anlamsal benzerliğini TextEmbedder.cosineSimilarity işlevi. Örnek için aşağıdaki koda bakın.

val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)

Örnek kodda TextEmbedder.cosineSimilarity() işlevi TextEmbedderHelper.kt dosyası olarak kaydedebilirsiniz.