מדריך לזיהוי שפה באינטרנט

המשימה MediaPipe Language Detector מאפשרת לזהות את השפה של קטע טקסט. בהוראות האלה מוסבר איך להשתמש בכלי לזיהוי שפה באפליקציות אינטרנט ובאפליקציות JavaScript. דוגמת הקוד שמתוארת בהוראות האלה זמינה ב-GitHub.

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

קוד לדוגמה

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

הגדרה

בקטע הזה מפורטים השלבים העיקריים להגדרת סביבת הפיתוח ופרויקטים של קוד במיוחד לשימוש בכלי Language Detector. מידע כללי על הגדרת סביבת הפיתוח לשימוש במשימות MediaPipe, כולל דרישות לגבי גרסת הפלטפורמה, זמין במדריך ההגדרה ל-Web.

חבילות JavaScript

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

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

npm install @mediapipe/tasks-text

אם רוצים לפרוס לשרת, אפשר להשתמש בשירות של רשת להעברת תוכן (CDN), כמו jsDelivr, כדי להוסיף קוד ישירות לדף ה-HTML, באופן הבא:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

דגם

המשימה MediaPipe Language Detector (גלאי שפה) דורשת מודל מאומן שתואם למשימה הזו. מידע נוסף על מודלים מאומנים שזמינים לזיהוי שפה מופיע בקטע Models (מודלים) בסקירה הכללית של המשימה.

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

<dev-project-root>/app/shared/models

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

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

יצירת המשימה

משתמשים באחת מפונקציות זיהוי השפה LanguageDetector.createFrom...() כדי להכין את המשימה להפעלת מסקנות. אפשר להשתמש בפונקציה createFromModelPath() עם נתיב יחסי או מוחלט לקובץ המודל שאומן. בדוגמת הקוד הבאה מוצג שימוש בפונקציה createFromOptions(). מידע נוסף על הגדרת משימות זמין במאמר אפשרויות הגדרה.

בדוגמת הקוד הבאה אפשר לראות איך יוצרים ומגדירים את המשימה הזו.

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

אפשרויות הגדרה

במשימה הזו יש את אפשרויות ההגדרה הבאות לאפליקציות אינטרנט ולאפליקציות JavaScript:

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
maxResults הגדרה של המספר המקסימלי האופציונלי של תחזיות שפה עם הניקוד הכי גבוה שיוחזרו. אם הערך הזה קטן מאפס, כל התוצאות הזמינות מוחזרות. מספרים חיוביים -1
scoreThreshold הגדרת סף לניקוד החיזוי שמבטל את הסף שצוין במטא-נתונים של המודל (אם צוין כזה). תוצאות מתחת לערך הזה נדחות. כל מספר ממשי לא מוגדר
categoryAllowlist מגדירה את הרשימה האופציונלית של קודי שפה מותרים. אם הערך לא ריק, המערכת תסנן את התחזיות לגבי השפה שקוד השפה שלהן לא מופיע בקבוצה הזו. האפשרות הזו לא יכולה לפעול יחד עם categoryDenylist, ושימוש בשתיהן יחד יגרום לשגיאה. כל המחרוזות לא מוגדר
categoryDenylist מגדיר את הרשימה האופציונלית של קודי שפה שאסור להשתמש בהם. אם הוא לא ריק, תחזיות שפה שקוד השפה שלהן נמצא בקבוצה הזו יסוננו. האפשרות הזו לא יכולה לפעול יחד עם categoryAllowlist, ושימוש בשתי האפשרויות יחד יוביל לשגיאה. כל המחרוזות לא מוגדר

הכנת הנתונים

הכלי לזיהוי שפה פועל עם נתוני טקסט (string). המשימה מטפלת בעיבוד המקדים של נתוני הקלט, כולל טוקניזציה ועיבוד טנסור. כל העיבוד המקדים מתבצע בפונקציה detect. אין צורך לבצע עיבוד מקדים נוסף של טקסט הקלט.

const inputText = "The input text for the detector.";

הרצת המשימה

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

בדוגמה הבאה אפשר לראות איך להריץ את העיבוד באמצעות מודל המשימות:

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

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

המשימה Language Detector (זיהוי שפה) מחזירה LanguageDetectorResult שכולל רשימה של תחזיות לגבי שפות, יחד עם ההסתברויות של התחזיות האלה. כך נראים נתוני הפלט של המשימה הזו:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

התוצאה הזו התקבלה מהרצת המודל על טקסט הקלט: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

דוגמה לקוד שנדרש לעיבוד התוצאות של המשימה הזו ולהצגתן זמינה כאן.