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

MediaPipe Text Classifier görevi, metni tanımlanmış bir dizi kategoriye (ör. olumlu veya olumsuz duygu) göre sınıflandırmanıza olanak tanır. Kategoriler, kullandığınız modele ve bu modelin nasıl eğitildiğine göre belirlenir. Bu talimatlarda, web ve JavaScript uygulamaları için Metin Sınıflandırıcı'nın nasıl kullanılacağı gösterilmektedir.

Bu görevin nasıl çalıştığını görmek için demoyu inceleyebilirsiniz. Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış başlıklı makaleyi inceleyin.

Kod örneği

Text Classifier'ın örnek kodu, bu görevin JavaScript'te eksiksiz bir uygulamasını referansınız için sağlar. Bu kod, 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ı örneğini 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ı ve kod projelerinizi özellikle Text Classifier'ı kullanacak şekilde ayarlamayla ilgili temel adımlar açıklanmaktadır. Platform sürümü gereksinimleri de dahil olmak üzere MediaPipe Görevleri'ni kullanmak için geliştirme ortamınızı ayarlama hakkında genel bilgi edinmek istiyorsanız Web için kurulum kılavuzu başlıklı makaleyi inceleyin.

JavaScript paketleri

Text Classifier kodu, @mediapipe/tasks-text paketi üzerinden kullanılabilir. Bu kitaplıkları, platform kurulum kılavuzunda verilen bağlantılardan bulup indirebilirsiniz.

Aşağıdaki komutu kullanarak yerel hazırlama için gerekli paketleri 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) hizmeti kullanabilirsiniz.

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

Model

MediaPipe Text Classifier görevi, bu görevle uyumlu eğitilmiş bir model gerektirir. Metin sınıflandırıcı için kullanılabilen eğitilmiş modeller hakkında daha fazla bilgi edinmek için görev genel bakışındaki Modeller bölümüne bakın.

Bir model seçip indirin ve proje dizininizde saklayı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

Görevleri çıkarım çalıştırmaya hazırlamak için Text Classifier TextClassifier.createFrom...() işlevlerinden birini kullanın. Eğitilmiş model dosyasına göreli veya mutlak bir yolla erişmek için createFromModelPath() işlevini kullanabilirsiniz. Aşağıdaki kod örneğinde TextClassifier.createFromOptions() işlevinin kullanımı gösterilmektedir. Kullanılabilir yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırma seçenekleri başlıklı makaleyi inceleyin.

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

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 Görev modelinin meta verilerinde varsa görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en'dir. TensorFlow Lite Metadata Writer API'yi kullanarak özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz. Yer kodu en
maxResults Döndürülecek isteğe bağlı maksimum en yüksek puanlı sınıflandırma sonucu sayısını ayarlar. Sayı < 0 ise mevcut tüm sonuçlar döndürülür. Pozitif sayılar -1
scoreThreshold Model meta verilerinde (varsa) sağlanan tahmini puan eşiğini geçersiz kılan eşiği ayarlar. Bu değerin altındaki sonuçlar reddedilir. Herhangi bir kayan öğe Ayarlanmadı
categoryAllowlist İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede olmayan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek, categoryDenylist ile birlikte kullanılamaz ve ikisinin birlikte kullanılması hataya neden olur. Tüm dizeler Ayarlanmadı
categoryDenylist İzin verilmeyen isteğe bağlı kategori adları listesini ayarlar. Boş değilse kategori adı bu kümede olan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek categoryAllowlist ile birlikte kullanılamaz ve ikisinin birlikte kullanılması hataya neden olur. Tüm dizeler Ayarlanmadı

Verileri hazırlama

Metin sınıflandırıcı, metin (String) verileriyle çalışır. Görev, belirtekleştirme ve tensör ön işleme dahil olmak üzere veri girişi ön işlemesini gerçekleştirir.

Tüm ön işleme işlemleri classify() işlevi içinde gerçekleştirilir. Giriş metninin önceden ek olarak ön işlenmesine gerek yoktur.

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

Görevi çalıştırma

Text Classifier, çıkarımları tetiklemek için classify() işlevini kullanır. Metin sınıflandırması için bu, giriş metniyle ilgili olası kategorilerin döndürülmesi anlamına gelir.

Aşağıdaki kodda, görevi kullanarak işlemenin nasıl yürütüleceği gösterilmektedir.

// 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 elde edilen çıkış verilerine bir örnek verilmiştir:

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-classifier çalıştırılarak elde edilmiştir: "an imperfect but overall entertaining mystery".