המשימה 'מסווג טקסט של MediaPipe' מאפשרת לסווג טקסט לקבוצה של קטגוריות מוגדרות, כמו סנטימנט חיובי או שלילי. הקטגוריות קובעות את המודל שבו אתם משתמשים ואת אופן האימון של המודל. בהוראות האלה מוסבר איך להשתמש במסווג הטקסט באמצעות Python.
אפשר לראות את המשימה הזו בפעולה בהדגמה באינטרנט. למידע נוסף על היכולות, המודלים ואפשרויות התצורה של המשימה הזו, קראו את הסקירה הכללית.
קוד לדוגמה
הקוד לדוגמה של Text Classifier מספק הטמעה מלאה של המשימה הזו ב-Python לעיונכם. הקוד הזה יעזור לכם לבדוק את המשימה הזו ולהתחיל ליצור אפליקציה משלכם לסיווג טקסט. תוכלו להציג, להריץ ולערוך את הקוד לדוגמה של מסווג הטקסט, באמצעות דפדפן האינטרנט בלבד.
אם אתם מטמיעים את Text Classifier for Raspberry Pi, עיינו באפליקציה לדוגמה של Raspberry Pi.
הגדרה
בקטע הזה מתוארים שלבים עיקריים להגדרת סביבת הפיתוח ופרויקטים של קוד במיוחד לשימוש ב-Text Classifier. למידע כללי על הגדרת סביבת הפיתוח לשימוש ב-MediaPipe Tasks, כולל הדרישות לגרסת הפלטפורמה, קראו את מדריך ההגדרה של Python.
חבילות
התכונה Text Classifier משתמשת בחבילה של צינור עיבוד הנתונים ב-Mediapipe. אפשר להתקין את יחסי התלות האלה באמצעות הדברים הבאים:
$ python -m pip install mediapipe
יבוא
ייבא את המחלקות הבאות כדי לגשת לפונקציות המשימה של Text Classifier:
from mediapipe.tasks import python
from mediapipe.tasks.python import text
מודל
למשימה של MediaPipe Text Classifier נדרש מודל מאומן שתואם למשימה הזו. למידע נוסף על המודלים הזמינים למסווג טקסט, עיינו בסקירה הכללית על המשימות בקטע Models.
בוחרים ומורידים מודל, ולאחר מכן מאחסנים אותו בספרייה מקומית:
model_path = '/absolute/path/to/text_classifier.tflite'
מציינים את הנתיב של המודל עם הפרמטר BaseOptions
של האובייקט model_asset_path
, באופן הבא:
base_options = BaseOptions(model_asset_path=model_path)
יצירת המשימה
המשימה 'מסווג טקסט של MediaPipe' משתמשת בפונקציה 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)
טיפול בתוצאות והצגתן
הפלט של 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"
.