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

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

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

קוד לדוגמה

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

הגדרה

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

חבילות JavaScript

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

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

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

הכנת הנתונים

מזהה השפה פועל עם נתוני טקסט (string). המשימה מטפלת בעיבוד מראש של קלט הנתונים, כולל המרה לאסימונים ועיבוד מראש של tensor. כל העיבודים מראש מטופלים בפונקציה 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);

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

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

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