המשימה 'מסווג טקסט' מאפשרת לכם לסווג טקסט בקבוצה של קטגוריות מוגדרות, כמו סנטימנט חיובי או שלילי. הקטגוריות נקבעות לפי במודל שבו אתם משתמשים ואיך הוא אומן את המודל. לפי ההוראות האלה רואים איך להשתמש במסווג הטקסט באפליקציות ל-iOS. דוגמת הקוד שמתוארת הוראות זמינות באתר GitHub.
אפשר לראות את המשימה הזו באתר . עבור לקבלת מידע נוסף על היכולות, המודלים ואפשרויות התצורה של במשימה הזאת. סקירה כללית
קוד לדוגמה
קוד הדוגמה למשימות MediaPipe הוא יישום בסיסי של מסווג טקסט אפליקציה ל-iOS.
אפשר להשתמש באפליקציה כנקודת התחלה של אפליקציה משלך ל-iOS, או להתייחס אליה כשמשנים אפליקציה קיימת. אפשר לעיין בקוד לדוגמה של מסווג הטקסט על GitHub.
להורדת הקוד
בהוראות הבאות מוסבר איך ליצור עותק מקומי של הדוגמה באמצעות כלי שורת הפקודה git.
כדי להוריד את הקוד לדוגמה:
משכפלים את מאגר ה-Git באמצעות הפקודה הבאה:
git clone https://github.com/google-ai-edge/mediapipe-samples
לחלופין, להגדיר את מכונת ה-Git שלך לשימוש בקופה עם היעדר תשלום, כדי רק הקבצים עבור האפליקציה לדוגמה של מסווג הטקסט:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
אחרי שתיצרו גרסה מקומית של הקוד לדוגמה, תוכלו להתקין את ספריית המשימות של MediaPipe, פותחים את הפרויקט באמצעות Xcode ומריצים את האפליקציה. עבור ההוראות מפורטות במדריך ההגדרה ל-iOS.
רכיבים מרכזיים
הקבצים הבאים מכילים את הקוד החיוני בדוגמה של מסווג הטקסט יישום:
- TextClassifierHelper.swift: הפעלת מסווג הטקסט וטיפול בבחירת המודל.
- ViewController.swift: הטמעה של ממשק המשתמש ועיצוב של התוצאות.
הגדרה
בקטע הזה מתוארים השלבים העיקריים להגדרת סביבת הפיתוח פרויקטים של קוד לשימוש במסווג טקסט. לקבלת מידע כללי על הגדרת סביבת פיתוח לשימוש במשימות MediaPipe, כולל גרסת פלטפורמה מומלץ לעיין במדריך ההגדרה ל-iOS.
יחסי תלות
מסווג הטקסט משתמש בספרייה MediaPipeTasksText
, שחובה להתקין
באמצעות CocoaPods. הספרייה תואמת גם לאפליקציות Swift ו-Objective-C
ולא נדרשת הגדרה נוספת ספציפית לשפה.
הוראות להתקנת CocoaPods ב-macOS מפורטות במאמר CocoaPods
במדריך ההתקנה.
לקבלת הוראות ליצירת Podfile
עם ה-pods שדרושים
באפליקציה, קראו את המאמר שימוש
CocoaPods.
מוסיפים את המקבץ MediaPipeTasksText ב-Podfile
באמצעות הקוד הבא:
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
אם האפליקציה שלך כוללת יעדים לבדיקת יחידות, יש לעיין במדריך ההגדרה של
iOS למידע נוסף על ההגדרה
Podfile
.
דגם
למשימה 'מסווג טקסט של MediaPipe' נדרש מודל מאומן התואם במשימה הזו. לקבלת מידע נוסף על המודלים הזמינים המאומנים עבור מסווג טקסט, אפשר לעיין בסקירה הכללית של המשימות מודלים .
בוחרים מודל ומורידים אותו, ומוסיפים אותו לספריית הפרויקט באמצעות Xcode. לקבלת הוראות להוספת קבצים לפרויקט Xcode, קראו את המאמר ניהול קבצים ותיקיות ב-Xcode. project.
משתמשים במאפיין BaseOptions.modelAssetPath
כדי לציין את הנתיב למודל
ב-App Bundle. בקטע הבא מופיע קוד לדוגמה.
יצירת המשימה
כדי ליצור את המשימה 'מסווג טקסט', אפשר להפעיל אחד מהמאתחלים שלה.
המאתחל TextClassifier(options:)
מגדיר ערכים להגדרה
אפשרויות.
אם אתם לא צריכים מסווג טקסט שאותחלה עם הגדרה מותאמת אישית
אפשר להשתמש במאתחל של TextClassifier(modelPath:)
כדי ליצור
מסווג טקסט עם אפשרויות ברירת המחדל. מידע נוסף על הגדרה
אפשרויות נוספות, ראו סקירה כללית של ההגדרות.
הקוד הבא מדגים איך יוצרים ומגדירים את המשימה הזו.
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
אפשרויות תצורה
המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות ל-iOS:
שם האפשרות | תיאור | טווח ערכים | ערך ברירת מחדל |
---|---|---|---|
displayNamesLocale |
מגדיר את השפה של תוויות שישמשו לשמות לתצוגה שסופקו
של מודל המשימה, אם יש כאלה. ברירת המחדל היא en עבור
אנגלית. אפשר להוסיף תוויות שמותאמות לשוק המקומי למטא-נתונים של מודל מותאם אישית
באמצעות TensorFlow Lite Metadata Writer API
| קוד שפה | en |
maxResults |
מגדיר את המספר המקסימלי האופציונלי של תוצאות סיווג מובילות ל- החזרה. אם < 0, כל התוצאות הזמינות יוחזרו. | מספרים חיוביים כלשהם | -1 |
scoreThreshold |
הגדרת סף הציון של התחזית שמבטל את הסף שצוין ב את המטא-נתונים של המודל (אם יש). תוצאות מתחת לערך הזה נדחות. | כל מספר ממשי (float) | לא מוגדר |
categoryAllowlist |
מגדיר את הרשימה האופציונלית של שמות קטגוריות מותרות. אם השדה לא ריק,
תוצאות הסיווג שבהן שם הקטגוריה לא נמצא בקבוצה הזו יהיו
מסונן. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים.
האפשרות הזו בלעדית למשתמשי categoryDenylist ומשתמשים
ושניהם יובילו לשגיאה. |
כל מחרוזת | לא מוגדר |
categoryDenylist |
מגדיר את הרשימה האופציונלית של שמות קטגוריות שאינם מותרים. אם המיקום
לא ריקות, תוצאות סיווג שבהן שם הקטגוריה נמצא בקבוצה זו יסוננו
החוצה. המערכת מתעלמת משמות קטגוריות כפולים או לא ידועים. האפשרות הזו מקבילה
בלעדי ל-categoryAllowlist ושימוש בשתי התוצאות עלול לגרום לשגיאה. |
כל מחרוזת | לא מוגדר |
הכנת נתונים
התכונה 'סיווג טקסט' פועלת עם נתוני טקסט. המשימה מטפלת בקלט הנתונים מראש, כולל יצירת אסימונים ועיבוד מראש של tensor.
כל העיבוד מראש מטופל בתוך הפונקציה classify(text:)
. אין
את הצורך בעיבוד מראש נוסף של טקסט הקלט.
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
הרצת המשימה
כדי להפעיל את מסווג הטקסט, צריך להשתמש בשיטה classify(text:)
. מסווג הטקסט
מחזירה את הקטגוריות האפשריות של טקסט הקלט.
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
הערה: המשימה תחסום את השרשור הנוכחי עד לסיום הרצת ההסקה על הטקסט. כדי לא לחסום את השרשור הנוכחי, צריך לבצע את העיבוד שרשור ברקע באמצעות iOS שליחה או NSOperation של מסגרות.
טיפול בתוצאות והצגתן
כשמריצים את ההסקה, המשימה של מסווג הטקסט מחזירה 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"
.
ViewController.swift בקוד לדוגמה מדגים איך להציג את תוצאות הזיהוי שהוחזרו מהמשימה.