המשימה 'מזהה שפה של MediaPipe' מאפשרת לכם לזהות את השפה של קטע טקסט. האלה הוראות לשימוש בגלאי השפה באפליקציות ל-Android. הקוד דוגמה שמתוארת בהוראות האלה זמינה GitHub.
אפשר לראות את המשימה הזו בפעולה: demo. מידע נוסף על היכולות, המודלים ואפשרויות ההגדרה במשימה הזאת, ראו סקירה כללית.
קוד לדוגמה
הקוד לדוגמה של 'מזהה השפה' מספק הטמעה פשוטה לעיונך. הקוד הזה יעזור לך לבדוק את המשימה הזו ולהתחיל בעבודה לצורך פיתוח תכונת זיהוי שפה משלכם. אפשר לעיין קוד לדוגמה של מזהה שפה ב-GitHub.
להורדת הקוד
בהוראות הבאות מוסבר איך ליצור עותק מקומי של הדוגמה באמצעות כלי שורת הפקודה git לניהול גרסאות.
כדי להוריד את הקוד לדוגמה:
- משכפלים את מאגר ה-Git באמצעות הפקודה הבאה:
git clone https://github.com/google-ai-edge/mediapipe-samples
- אפשר גם להגדיר את ה-Git למכונת ה-Git לשימוש בקופה מועטה,
קיימים רק הקבצים של האפליקציה לדוגמה של 'מזהה שפה':
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
לקבלת הוראות להגדרה ולהרצה של דוגמה ב-Android Studio, ההוראות להגדרת קוד לדוגמה מדריך ההגדרה ל-Android.
רכיבים מרכזיים
הקבצים הבאים מכילים את הקוד החיוני לסיווג הטקסט אפליקציה לדוגמה:
- LanguageDetectorHelper.kt – – הפעלת מזהה השפה וטיפול בבחירת המודל.
- ResultsAdapter.kt – טיפול בתוצאות הזיהוי ועיצוב שלהן.
- MainActivity.kt -
מטמיע את האפליקציה, כולל קריאה ל-
LanguageDetectorHelper
ולResultsAdapter
הגדרה
בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטים של קוד ייעודי לשימוש ב-Language Detect. למידע כללי על להגדיר את סביבת הפיתוח לשימוש במשימות של MediaPipe, כולל הדרישות לגרסת הפלטפורמה. מדריך ההגדרה ל-Android.
יחסי תלות
מזהה השפה משתמש בספריות com.google.mediapipe:tasks-text
. הוספת הפריט
שתלויות בקובץ build.gradle
של פרויקט פיתוח האפליקציה ל-Android.
אפשר לייבא את יחסי התלות הנדרשים באמצעות הקוד הבא:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
דגם
למשימה 'מזהה שפה של MediaPipe' נדרש מודל מאומן שתואם למשימה הזו. לקבלת מידע נוסף על מודלים זמינים מאומנים של 'מזהה שפה', אפשר לעיין במאמר בסקירה הכללית על המשימה בקטע 'מודלים'.
בוחרים את המודל, מורידים אותו ושומרים אותו בספריית הפרויקט:
<dev-project-root>/src/main/assets
צריך לציין את הנתיב של המודל בתוך הפרמטר ModelName
.
יצירת המשימה
אפשר להשתמש באחת מהפונקציות של createFrom...()
כדי ליצור את המשימה.
הפונקציה createFromOptions()
מקבלת אפשרויות הגדרה של השפה
במכשיר נייד. אפשר להפעיל את המשימה גם דרך היצרן של createFromFile()
מותאמת אישית. הפונקציה createFromFile()
מקבלת נתיב יחסי או מוחלט אל
את קובץ המודל שעבר אימון. מידע נוסף על הגדרת משימות זמין
אפשרויות להגדרות.
הקוד הבא הוא דוגמה ליצירה ולהגדרה של המשימה.
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
אפשר לראות דוגמה ליצירת משימה בדוגמת הקוד.
LanguageDetectorHelper
מחלקה initDetector()
.
אפשרויות תצורה
המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות ל-Android:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
maxResults |
מגדיר את המספר המקסימלי האופציונלי של חיזויים בשפה בעלת הדירוג הגבוה ביותר ל- החזרה. אם הערך הזה קטן מאפס, יוחזרו כל התוצאות הזמינות. | מספרים חיוביים כלשהם | -1 |
scoreThreshold |
הגדרת סף הציון של התחזית שמבטל את הסף שצוין ב את המטא-נתונים של המודל (אם יש). תוצאות מתחת לערך הזה נדחות. | כל מספר ממשי (float) | לא מוגדר |
categoryAllowlist |
מגדיר את הרשימה האופציונלית של קודים של שפות מורשות. אם השדה לא ריק,
הצעות שפה שקוד השפה שלהן לא כלול בקבוצה הזו יהיו
מסונן. האפשרות הזו בלעדית לבעלי חשבונות אחרים
categoryDenylist והשימוש בשתיהן יביאו לשגיאה. |
כל מחרוזת | לא מוגדר |
categoryDenylist |
מגדיר את הרשימה האופציונלית של קודי שפות אסורים. אם המיקום
לא ריק, יסוננו חיזויים של שפות שקוד השפה שלהן נמצא בקבוצה הזו
החוצה. האפשרות הזו קיימת רק בחשבונות של categoryAllowlist וגם
השימוש בשתי התוצאות גורם לשגיאה. |
כל מחרוזת | לא מוגדר |
הכנת נתונים
גלאי השפה פועל עם נתוני טקסט (String
). המשימה מטפלת בקלט הנתונים
מראש, כולל יצירת אסימונים ועיבוד מראש של tensor. הכול
העיבוד מראש מטופל בתוך הפונקציה detect()
. אין צורך
לפני עיבוד נוסף של טקסט הקלט.
String inputText = "Some input text for the language detector";
הרצת המשימה
מזהה השפה משתמש בשיטה LanguageDetector.detect()
לעיבוד קלט
של הטקסט ולחזות את שפת הטקסט. צריך להשתמש בהפעלה נפרדת
thread לביצוע הזיהוי כדי להימנע מחסימת משתמש Android
תהליכונים (thread) בממשק של האפליקציה.
הקוד הבא מדגים איך מבצעים את העיבוד באמצעות המשימה באמצעות שרשור ביצוע נפרד.
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
בדוגמה עם הקוד אפשר לראות דוגמה להרצת משימה.
LanguageDetectorHelper
מחלקה detect()
.
טיפול בתוצאות והצגתן
פלט השפה של 'מזהה השפה' הוא 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."
ניתן לראות דוגמה להצגת תוצאות בדוגמת הקוד
ResultsAdapter
כיתה ו-ViewHolder
כיתה פנימית.