Web için metin sınıflandırma kılavuzu

MediaPipe Metin Sınıflandırıcı görevi, metni pozitif veya negatif duygu gibi tanımlanmış bir dizi kategoriye göre sınıflandırmanızı sağlar. Kategoriler, kullandığınız modeli ve bu modelin nasıl eğitildiğini belirler. Bu talimatlar, web ve JavaScript uygulamaları için Metin Sınıflandırıcı'nın nasıl kullanılacağını gösterir.

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 edinmek için Genel Bakış bölümüne bakın.

Kod örneği

Metin Sınıflandırıcı için örnek kod, size referans olması açısından bu görevin JavaScript'te eksiksiz bir uygulamasını sunmaktadır. Bu kod, bu görevi test etmenize ve kendi metin sınıflandırma uygulamanızı oluşturmaya başlamanıza yardımcı olur. Metin Sınıflandırıcı örnek kodunu yalnızca web tarayıcınızı kullanarak görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.

Kurulum

Bu bölümde, geliştirme ortamınızı ayarlamanın temel adımları açıklanmaktadır ve projelerinizi özel olarak Metin Sınıflandırıcı'yı kullanacak şekilde kodlamalısınız. Platform sürümü gereksinimleri de dahil olmak üzere geliştirme ortamınızı MediaPipe Görevleri'ni kullanmak üzere ayarlama hakkında genel bilgiler için Web için kurulum kılavuzuna bakın.

JavaScript paketleri

Metin Sınıflandırıcı kodu, @mediapipe/tasks-text paketi aracılığıyla kullanılabilir. Bu kitaplıkları, platform Kurulum kılavuzunda sağlanan bağlantılardan bulup indirebilirsiniz.

Aşağıdaki komutu kullanarak gerekli paketleri yerel hazırlık için aşağıdaki kodla yükleyebilirsiniz:

npm install @mediapipe/tasks-text

Bir sunucuya dağıtım yapmak istiyorsanız kodu doğrudan HTML sayfanıza eklemek için jsDelivr gibi bir içerik yayınlama ağı (CDN) hizmetini kullanabilirsiniz:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

Model

MediaPipe Metin Sınıflandırıcı görevi, bu görevle uyumlu, eğitilmiş bir model gerektirir. Metin Sınıflandırıcı için eğitilmiş modellerle ilgili daha fazla bilgi almak üzere göreve genel bakış Modeller bölümüne bakın.

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

<dev-project-root>/assets/bert_text_classifier.tflite

Modelin yolunu, aşağıda gösterildiği gibi baseOptions nesnesi modelAssetPath parametresiyle belirtin:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

Görevi oluşturma

Çıkarımları çalıştırmak üzere görevi hazırlamak için Metin Sınıflandırıcı TextClassifier.createFrom...() işlevlerinden birini kullanın. createFromModelPath() işlevini, eğitilen model dosyasına giden göreli veya mutlak bir yolla kullanabilirsiniz. Aşağıdaki kod örneğinde, TextClassifier.createFromOptions() işlevinin kullanımı gösterilmiştir. Kullanılabilir yapılandırma seçenekleri hakkında daha fazla bilgi edinmek için Yapılandırma seçenekleri başlıklı makaleye bakın.

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

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

Yapılandırma seçenekleri

Bu görev, Web ve JavaScript 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 Varsa görev modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en şeklindedir. TensorFlow Lite Metadata Writer API'yi kullanarak özel modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz Yerel ayar kodu en
maxResults İsteğe bağlı olarak döndürülecek en yüksek puanlı sınıflandırma sonuçlarının isteğe bağlı maksimum sayısını ayarlar. < 0 ise 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 İsteğe bağlı olarak izin verilen kategori adları listesini ayarlar. Boş değilse kategori adı bu grupta yer almayan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır. 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 kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede yer alan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır. 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

Metin Sınıflandırı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, classify() işlevi içinde gerçekleştirilir. Giriş metninin önceden işlenmesine gerek yoktur.

const inputText = "The input text to be classified.";

Görevi çalıştırma

Metin Sınıflandırıcı, çıkarımları tetiklemek için classify() işlevini kullanır. Metin sınıflandırmada bu, giriş metni için olası kategorilerin döndürülmesi anlamına gelir.

Aşağıdaki kod, işlemenin görev modeliyle nasıl yürütüleceğini gösterir.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

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

Metin Sınıflandırıcı, giriş metni için olası kategorilerin listesini içeren bir TextClassifierResult çıktısı verir. Kategoriler, kullandığınız modele göre tanımlanır. Bu nedenle, farklı kategoriler istiyorsanız farklı bir model seçin veya mevcut bir modeli yeniden eğitin.

Aşağıda, bu görevden alınan çı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ç, şu giriş metninde BERT-sınıflandırıcı çalıştırılarak elde edildi: "an imperfect but overall entertaining mystery".