راهنمای طبقه بندی متن برای پایتون

وظیفه MediaPipe Text Classifier به شما امکان می دهد متن را به مجموعه ای از دسته بندی های تعریف شده، مانند احساسات مثبت یا منفی طبقه بندی کنید. دسته بندی ها مدلی را که استفاده می کنید و نحوه آموزش آن مدل تعیین می کنند. این دستورالعمل‌ها به شما نشان می‌دهند که چگونه از Text Classifier با پایتون استفاده کنید.

می توانید با مشاهده نسخه نمایشی وب، این کار را در عمل مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

نمونه کد

کد مثال برای Text Classifier اجرای کامل این کار در پایتون را برای مرجع شما فراهم می کند. این کد به شما کمک می کند تا این کار را آزمایش کنید و شروع به ساخت برنامه طبقه بندی متن خود کنید. شما می توانید کد نمونه Text Classifier را فقط با استفاده از مرورگر وب خود مشاهده، اجرا و ویرایش کنید.

اگر در حال پیاده‌سازی طبقه‌بندی‌کننده متن برای Raspberry Pi هستید، به برنامه نمونه Raspberry Pi مراجعه کنید.

راه اندازی

این بخش مراحل کلیدی را برای راه اندازی محیط توسعه و پروژه های کد به طور خاص برای استفاده از Text Classifier توضیح می دهد. برای اطلاعات کلی در مورد تنظیم محیط توسعه خود برای استفاده از MediaPipe Tasks، از جمله الزامات نسخه پلت فرم، به راهنمای راه اندازی برای Python مراجعه کنید.

بسته ها

Text Classifier از بسته mediapipe pip استفاده می کند. شما می توانید این وابستگی ها را با موارد زیر نصب کنید:

$ python -m pip install mediapipe

واردات

برای دسترسی به توابع تکلیف Text Classifier کلاس های زیر را وارد کنید:

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

مدل

وظیفه MediaPipe Text Classifier به یک مدل آموزش دیده نیاز دارد که با این کار سازگار باشد. برای اطلاعات بیشتر در مورد مدل‌های آموزش‌دیده موجود برای Text Classifier، بخش مدل‌های نمای کلی کار را ببینید.

یک مدل را انتخاب و دانلود کنید و سپس آن را در یک فهرست محلی ذخیره کنید:

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

مسیر مدل را با پارامتر شیء BaseOptions model_asset_path مانند شکل زیر مشخص کنید:

base_options = BaseOptions(model_asset_path=model_path)

کار را ایجاد کنید

وظیفه MediaPipe Text Classifier از تابع create_from_options برای تنظیم کار استفاده می کند. تابع create_from_options مقادیری را برای گزینه های پیکربندی برای تنظیم گزینه های طبقه بندی کننده می پذیرد. همچنین می توانید کار را با استفاده از تابع factory create_from_model_path مقداردهی اولیه کنید. تابع create_from_model_path یک مسیر نسبی یا مطلق به فایل مدل آموزش دیده می پذیرد. برای اطلاعات بیشتر در مورد گزینه های پیکربندی، گزینه های پیکربندی را ببینید.

کد زیر نحوه ساخت و پیکربندی این وظیفه را نشان می دهد.

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)

گزینه های پیکربندی

این کار دارای گزینه های پیکربندی زیر برای برنامه های Android است:

نام گزینه توضیحات محدوده ارزش مقدار پیش فرض
display_names_locale زبان برچسب‌ها را برای استفاده برای نام‌های نمایشی ارائه شده در فراداده مدل کار، در صورت وجود، تنظیم می‌کند. پیش فرض برای انگلیسی en است. با استفاده از TensorFlow Lite Metadata Writer API می‌توانید برچسب‌های محلی را به ابرداده یک مدل سفارشی اضافه کنید. کد محلی en
max_results حداکثر تعداد اختیاری نتایج طبقه بندی با امتیاز بالا را برای بازگشت تنظیم می کند. اگر < 0 باشد، تمام نتایج موجود برگردانده خواهند شد. هر عدد مثبت -1
score_threshold آستانه امتیاز پیش‌بینی را تنظیم می‌کند که بر آستانه ارائه‌شده در فراداده مدل (در صورت وجود) لغو می‌شود. نتایج زیر این مقدار رد می شوند. هر شناور تنظیم نشده است
category_allowlist فهرست اختیاری نام‌های دسته‌بندی مجاز را تنظیم می‌کند. در صورت خالی نبودن، نتایج طبقه‌بندی که نام دسته آن‌ها در این مجموعه نیست، فیلتر می‌شوند. نام‌های دسته‌بندی تکراری یا ناشناخته نادیده گرفته می‌شوند. این گزینه با category_denylist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. هر رشته تنظیم نشده است
category_denylist فهرست اختیاری نام‌های دسته‌هایی را که مجاز نیستند را تنظیم می‌کند. در صورت خالی نبودن، نتایج طبقه بندی که نام دسته آنها در این مجموعه است فیلتر می شود. نام‌های دسته‌بندی تکراری یا ناشناخته نادیده گرفته می‌شوند. این گزینه با category_allowlist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. هر رشته تنظیم نشده است

داده ها را آماده کنید

Text Classifier با داده های متن ( str ) کار می کند. وظیفه، پیش پردازش ورودی داده، از جمله پیش پردازش توکن و تانسور را انجام می دهد.

تمام پیش پردازش ها در تابع classify انجام می شود. نیازی به پیش پردازش اضافی متن ورودی از قبل نیست.

input_text = 'The input text to be classified.'

وظیفه را اجرا کنید

Text Classifier از تابع classify برای استنتاج استفاده می کند. برای طبقه‌بندی متن، این به معنای برگرداندن دسته‌های ممکن برای متن ورودی است.

کد زیر نحوه اجرای پردازش با مدل وظیفه را نشان می دهد.

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

کنترل و نمایش نتایج

Text Classifier یک شی TextClassifierResult حاوی لیستی از دسته بندی های ممکن برای متن ورودی را خروجی می دهد. دسته‌ها با مدلی که استفاده می‌کنید تعریف می‌شوند، بنابراین اگر دسته‌های متفاوتی می‌خواهید، مدل متفاوتی را انتخاب کنید یا یک مدل موجود را دوباره آموزش دهید.

شکل زیر نمونه ای از داده های خروجی از این کار را نشان می دهد:

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

این نتیجه با اجرای دسته‌بندی BERT بر روی متن ورودی به دست آمده است: "an imperfect but overall entertaining mystery" .