מדריך לסיווג טקסט ב-Python

המשימה MediaPipe Text Classifier מאפשרת לכם לסווג טקסט בקבוצה של קטגוריות מוגדרות כמו סנטימנט חיובי או שלילי. לפי הקטגוריות נקבעות המודל שבהם משתמשים, ואופן האימון של המודל. ההוראות האלה מראות איך להשתמש במסווג טקסט באמצעות Python.

אפשר לראות את המשימה הזו בפעולה: הדגמה באינטרנט. לקבלת מידע נוסף על היכולות, המודלים אפשרויות ההגדרה של המשימה הזו, ראו סקירה כללית.

קוד לדוגמה

הקוד לדוגמה של מסווג הטקסט מספק הטמעה מלאה של ב-Python, לעיונך. הקוד הזה עוזר לכם לבדוק את המשימה הזו ולקבל התחלתם ליצור אפליקציה משלכם לסיווג טקסט. אפשר להציג, להריץ ו עריכה של מסווג הטקסט קוד לדוגמה באמצעות דפדפן האינטרנט בלבד.

אם אתם מטמיעים את מסווג הטקסט עבור Raspberry Pi, יש לעיין דוגמה ל-Raspberry Pi app.

הגדרה

בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטים של קוד שישמשו באופן ספציפי לשימוש במסווג טקסט. למידע כללי על להגדיר את סביבת הפיתוח לשימוש ב-MediaPipe Tasks, כולל הדרישות לגרסת הפלטפורמה. מדריך ההגדרה של Python

חבילות

מסווג טקסט משתמש בחבילה של mediapipe Pip. אפשר להתקין את יחסי התלות האלה עם:

$ python -m pip install mediapipe

יבוא

כדי לגשת לפונקציות המשימות של מסווג הטקסט, מייבאים את המחלקות הבאות:

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

דגם

למשימה של מסווג הטקסט של MediaPipe נדרש מודל מאומן שתואם למשימה הזו. מידע נוסף על מודלים זמינים מאומנים של מסווג טקסט זמין בכתובת בסקירה הכללית על המשימה בקטע 'מודלים'.

בוחרים מודל ומורידים אותו, ולאחר מכן שומרים אותו בספרייה מקומית:

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

ציון הנתיב של המודל עם האובייקט model_asset_path מסוג BaseOptions פרמטר, כפי שמוצג בהמשך:

base_options = BaseOptions(model_asset_path=model_path)

יצירת המשימה

המשימה של MediaPipe Text Classifier משתמשת בפונקציה create_from_options כדי להגדיר למשימה הזו. הפונקציה create_from_options מקבלת ערכים להגדרה להגדרת אפשרויות הסיווג. אפשר לאתחל את המשימה גם באמצעות הפונקציה להגדרות המקוריות 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 הגדרת סף הציון של התחזית שמבטל את הסף שצוין ב את המטא-נתונים של המודל (אם יש). תוצאות מתחת לערך הזה נדחות. כל מספר ממשי (float) לא מוגדר
category_allowlist מגדיר את הרשימה האופציונלית של שמות קטגוריות מותרות. אם השדה לא ריק, תוצאות הסיווג שבהן שם הקטגוריה לא נמצא בקבוצה הזו יהיו מסונן. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים. האפשרות הזו בלעדית למשתמשי category_denylist ומשתמשים ושניהם יובילו לשגיאה. כל מחרוזת לא מוגדר
category_denylist מגדיר את הרשימה האופציונלית של שמות קטגוריות שאינם מותרים. אם המיקום לא ריקות, תוצאות סיווג שבהן שם הקטגוריה נמצא בקבוצה זו יסוננו החוצה. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים. האפשרות הזו מקבילה בלעדי ל-category_allowlist ושימוש בשתי התוצאות עלול לגרום לשגיאה. כל מחרוזת לא מוגדר

הכנת נתונים

התכונה 'סיווג טקסט' פועלת עם נתוני טקסט (str). המשימה מטפלת בקלט הנתונים מראש, כולל יצירת אסימונים ועיבוד מראש של tensor.

כל העיבוד מראש מטופל בתוך הפונקציה classify. אין צורך לעיבוד מראש נוסף של טקסט הקלט מראש.

input_text = 'The input text to be classified.'

הרצת המשימה

מסווג הטקסט משתמש בפונקציה classify כדי להפעיל הסקת מסקנות. לטקסט כלומר, תוחזר הקטגוריות האפשריות של טקסט הקלט.

הקוד הבא מדגים איך מבצעים את העיבוד באמצעות המשימה מודל טרנספורמר.

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

טיפול בתוצאות והצגתן

מסווג הטקסט מפיק פלט של אובייקט 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".