Python 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 Metin Sınıflandırıcı'nın Python ile nasıl kullanılacağını gösterir.

Web demosunu görüntüleyerek 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ı örnek kodu, size referans olması açısından bu görevin Python'da 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. Yalnızca web tarayıcınızı kullanarak Metin Sınıflandırıcı örnek kodunu görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz.

Raspberry Pi için Metin Sınıflandırıcı'yı uyguluyorsanız Raspberry Pi örnek uygulamasına bakın.

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, MediaPipe Görevleri'ni kullanmak üzere geliştirme ortamınızı ayarlama hakkında genel bilgileri Python için kurulum kılavuzu bölümünde bulabilirsiniz.

Paketler

Metin Sınıflandırıcı, mediapipe pip paketini kullanır. Bu bağımlılıkları aşağıdakilerle yükleyebilirsiniz:

$ python -m pip install mediapipe

İçe Aktarımlar

Metin Sınıflandırıcı görev işlevlerine erişmek için aşağıdaki sınıfları içe aktarın:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

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 yerel bir dizinde depolayın:

model_path = '/absolute/path/to/text_classifier.tflite'

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

base_options = BaseOptions(model_asset_path=model_path)

Görevi oluşturma

MediaPipe Metin Sınıflandırıcı görevi, görevi ayarlamak için create_from_options işlevini kullanır. create_from_options işlevi, sınıflandırıcı seçeneklerini ayarlamak için kullanılan yapılandırma seçeneklerine ait değerleri kabul eder. Görevi, create_from_model_path fabrika işlevini kullanarak da başlatabilirsiniz. create_from_model_path işlevi, eğitilen model dosyasına giden göreli veya mutlak yolu kabul eder. Yapılandırma seçenekleri 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.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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
display_names_locale 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
max_results İ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
score_threshold 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
category_allowlist İ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, category_denylist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. Herhangi bir dize Belirlenmedi
category_denylist İ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 category_allowlist 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 (str) 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.

input_text = '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.

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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 nesnesi üretir. 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".