מדריך לסיווג טקסט באינטרנט

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

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

קוד לדוגמה

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

הגדרה

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

חבילות JavaScript

הקוד של מסווג הטקסט זמין דרך @mediapipe/tasks-text חבילה. ניתן למצוא ולהוריד את הספריות האלה בקישורים שנמצאים פלטפורמה מדריך ההגדרה.

ניתן להתקין את החבילות הנדרשות עם הקוד הבא לצורך Staging מקומי באמצעות הפקודה הבאה:

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 נדרש מודל מאומן שתואם למשימה הזו. מידע נוסף על מודלים זמינים מאומנים של מסווג טקסט זמין בכתובת בסקירה הכללית על המשימה בקטע 'מודלים'.

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

<dev-project-root>/assets/bert_text_classifier.tflite

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

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

יצירת המשימה

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

הכנת נתונים

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

כל העיבוד מראש מטופל בתוך הפונקציה 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
);

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

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