המשימה MediaPipe Text Classifier מאפשרת לסווג טקסט לקבוצה של קטגוריות מוגדרות, כמו סנטימנט חיובי או שלילי. הקטגוריות נקבעות על ידי המודל שבו אתם משתמשים ועל ידי אופן האימון של המודל הזה. בהוראות האלה מוסבר איך להשתמש בסיווג טקסט באפליקציות אינטרנט ובאפליקציות JavaScript.
אפשר לראות את המשימה הזו בפעולה על ידי צפייה בהדגמה. מידע נוסף על היכולות, המודלים ואפשרויות ההגדרה של המשימה הזו זמין במאמר סקירה כללית.
קוד לדוגמה
קוד לדוגמה של Text Classifier מספק הטמעה מלאה של המשימה הזו ב-JavaScript לעיונכם. הקוד הזה עוזר לכם לבדוק את המשימה הזו ולהתחיל לבנות אפליקציה משלכם לסיווג טקסט. אתם יכולים להציג, להריץ ולערוך את הדוגמה של Text Classifier באמצעות דפדפן האינטרנט בלבד.
הגדרה
בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח ופרויקטים של קוד במיוחד לשימוש ב-Text Classifier. מידע כללי על הגדרת סביבת הפיתוח לשימוש ב-MediaPipe Tasks, כולל דרישות לגבי גרסת הפלטפורמה, מופיע במדריך ההגדרה ל-Web.
חבילות JavaScript
הקוד של מסווג הטקסט זמין בחבילה @mediapipe/tasks-text. אפשר למצוא ולהוריד את הספריות האלה מהקישורים שמפורטים במדריך ההגדרה של הפלטפורמה.
כדי להתקין את החבילות הנדרשות להעברה מקומית לבמה, משתמשים בפקודה הבאה:
npm install @mediapipe/tasks-text
אם רוצים לפרוס לשרת, אפשר להשתמש בשירות של רשת להעברת תוכן (CDN), כמו jsDelivr, כדי להוסיף קוד ישירות לדף ה-HTML, באופן הבא:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
דגם
כדי להשתמש במשימה MediaPipe Text Classifier, צריך מודל מאומן שתואם למשימה הזו. מידע נוסף על מודלים מאומנים זמינים לסיווג טקסט מופיע בקטע Models (מודלים) בסקירה הכללית של המשימה.
בוחרים מודל, מורידים אותו ושומרים אותו בספריית הפרויקט:
<dev-project-root>/assets/bert_text_classifier.tflite
מציינים את הנתיב של המודל באמצעות הפרמטר baseOptions של אובייקט modelAssetPath, כמו בדוגמה הבאה:
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
יצירת המשימה
משתמשים באחת מהפונקציות של Text Classifier TextClassifier.createFrom...() כדי להכין את המשימה להפעלת הסקת מסקנות. אפשר להשתמש בפונקציה createFromModelPath()
עם נתיב יחסי או מוחלט לקובץ המודל שאומן. בדוגמת הקוד הבאה מוצג שימוש בפונקציה TextClassifier.createFromOptions(). מידע נוסף על אפשרויות ההגדרה הזמינות מופיע במאמר אפשרויות הגדרה.
בדוגמת הקוד הבאה אפשר לראות איך יוצרים ומגדירים את המשימה הזו:
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();
אפשרויות הגדרה
במשימה הזו יש את אפשרויות ההגדרה הבאות לאפליקציות אינטרנט ולאפליקציות JavaScript:
| שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
|---|---|---|---|
displayNamesLocale |
ההגדרה הזו קובעת את שפת התוויות שבהן יש להשתמש בשמות המוצגים שמופיעים במטא-נתונים של המודל של המשימה, אם הם זמינים. ברירת המחדל היא en לאנגלית. אפשר להוסיף תוויות מתורגמות למטא-נתונים של מודל מותאם אישית
באמצעות TensorFlow Lite Metadata Writer API
| קוד לוקאל | en |
maxResults |
מגדיר את המספר המקסימלי האופציונלי של תוצאות סיווג עם הניקוד הכי גבוה שיוחזרו. אם הערך הוא < 0, כל התוצאות הזמינות יוחזרו. | מספרים חיוביים | -1 |
scoreThreshold |
הגדרת סף לניקוד החיזוי שמבטל את הסף שצוין במטא-נתונים של המודל (אם צוין כזה). תוצאות מתחת לערך הזה נדחות. | כל מספר ממשי | לא מוגדר |
categoryAllowlist |
מגדירים את הרשימה האופציונלית של שמות קטגוריות מותרים. אם המערך לא ריק, תוצאות הסיווג ששם הקטגוריה שלהן לא מופיע במערך הזה יסוננו. המערכת מתעלמת משמות קטגוריות כפולים או לא מוכרים.
האפשרות הזו לא יכולה לפעול יחד עם categoryDenylist, ושימוש בשתי האפשרויות יחד יגרום לשגיאה. |
כל המחרוזות | לא מוגדר |
categoryDenylist |
מגדירה את הרשימה האופציונלית של שמות קטגוריות שאסורות. אם המערך לא ריק, תוצאות הסיווג ששם הקטגוריה שלהן נמצא במערך הזה יסוננו. המערכת מתעלמת משמות קטגוריות כפולים או לא מוכרים. האפשרות הזו לא יכולה לפעול יחד עם categoryAllowlist, ושימוש בשתי האפשרויות יחד יוביל לשגיאה. |
כל המחרוזות | לא מוגדר |
הכנת הנתונים
מסווג הטקסט פועל עם נתוני טקסט (String). המשימה מטפלת בעיבוד המקדים של נתוני הקלט, כולל טוקניזציה ועיבוד טנסור.
כל העיבוד המקדים מתבצע בפונקציה classify(). אין צורך לבצע עיבוד מקדים נוסף של טקסט הקלט.
const inputText = "The input text to be classified.";
הרצת המשימה
מסווג הטקסט משתמש בפונקציה classify() כדי להפעיל מסקנות. בסיווג טקסט, המשמעות היא החזרת הקטגוריות האפשריות של טקסט הקלט.
בדוגמה הבאה אפשר לראות איך מבצעים את העיבוד באמצעות מודל המשימות.
// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
inputText
);
טיפול בתוצאות והצגתן
הפלט של 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-classifier על טקסט הקלט:
"an imperfect but overall entertaining mystery".