دليل تصنيف النصوص لنظام التشغيل iOS

تتيح لك مهمة مصنف النص تصنيف النص إلى مجموعة من الفئات المحددة، مثل الآراء الإيجابية أو السلبية. يتم تحديد الفئات على أساس النموذج الذي تستخدمه وكيف يتم تطبيق هذا النموذج. توضح لك هذه التعليمات طريقة استخدام "مصنِّف النص" في تطبيقات iOS. يمكن استخدام عينة التعليمات البرمجية الموضحة في هذه على التعليمات GitHub.

يمكنك رؤية هذه المهمة وهي قيد التنفيذ من خلال عرض الويب هذا تجريبي. بالنسبة مزيد من المعلومات حول الإمكانات والنماذج وخيارات التهيئة هذه المهمة، فراجع نظرة عامة:

مثال على الرمز البرمجي

رمز مثال MediaPipe Tasks هو تنفيذ أساسي لمصنف نص لنظام التشغيل iOS.

يمكنك استخدام التطبيق كنقطة بداية لتطبيق iOS، أو الرجوع إليه عند تعديل تطبيق حالي. ويمكنك الرجوع إلى مثال الرمز البرمجي لمصنف النص في GitHub.

تنزيل الرمز

توضّح لك التعليمات التالية كيفية إنشاء نسخة على الجهاز من هذا المثال. باستخدام أداة سطر الأوامر git.

لتنزيل نموذج الرمز:

  1. استنساخ مستودع git باستخدام الأمر التالي:

    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. يمكنك اختياريًا ضبط مثيل git لاستخدام عملية دفع متفرقة، وبالتالي فقط ملفات التطبيق الخاص بمثال "أداة تصنيف النص":

    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_classification/ios/
    

بعد إنشاء نسخة محلية من نموذج الرمز، يمكنك تثبيت مكتبة مهام MediaPipe، وفتح المشروع باستخدام Xcode، وتشغيل التطبيق. بالنسبة التعليمات، راجِع دليل إعداد iOS.

المكوّنات الرئيسية

تحتوي الملفات التالية على التعليمة البرمجية المهمة لمثال مصنف النص app:

ضبط إعدادات الجهاز

يصف هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير المشاريع البرمجية التي تستخدم أداة تصنيف النص. للحصول على معلومات عامة حول إعداد بيئة تطوير لاستخدام مهام MediaPipe، بما في ذلك إصدار النظام الأساسي المتطلبات، يُرجى الاطّلاع على دليل الإعداد لنظام التشغيل iOS.

التبعيات

يستخدم "مصنِّف النص" مكتبة MediaPipeTasksText التي يجب تثبيتها. باستخدام CocoaPods. المكتبة متوافقة مع تطبيقَي Swift وObjective-C ولا تتطلب أي إعداد إضافي خاص بلغة معيّنة.

للحصول على تعليمات حول تثبيت CocoaPods على نظام التشغيل macOS، يُرجى الرجوع إلى مقالة CocoaPods. دليل التركيب. للحصول على تعليمات حول كيفية إنشاء Podfile باستخدام المجموعات الصغيرة اللازمة التطبيق، فارجع إلى استخدام CocoaPods

أضِف مجموعة MediaPipeTasksText في Podfile باستخدام الرمز التالي:

target 'MyTextClassifierApp' do
  use_frameworks!
  pod 'MediaPipeTasksText'
end

إذا كان تطبيقك يتضمّن أهداف اختبار وحدات، راجِع دليل إعداد iOS للحصول على معلومات إضافية حول إعداد Podfile.

الطراز

تتطلب مهمة مصنِّف نص MediaPipe نموذجًا مدرّبًا ومتوافقًا بهذه المهمة. لمزيد من المعلومات عن النماذج المدربة المتاحة مصنف النص، راجع نظرة عامة على المهمة النماذج .

اختَر نموذجًا ونزِّله، ثم أضِفه إلى دليل مشروعك باستخدام Xcode. للحصول على تعليمات حول كيفية إضافة ملفات إلى مشروع Xcode، يمكنك الاطّلاع على مقالة إدارة الملفات والمجلدات في Xcode مشروعك.

استخدِم السمة BaseOptions.modelAssetPath لتحديد مسار النموذج. في حِزمة التطبيق. للاطّلاع على مثال على الرمز البرمجي، يُرجى مراجعة القسم التالي.

إنشاء المهمة

يمكنك إنشاء مهمة مصنف النص عن طريق استدعاء أحد المهيئات. تشير رسالة الأشكال البيانية يضبط برنامج تهيئة 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 لتعيين الحد الأدنى لنتيجة التنبؤ الذي يلغي الحد المقدم في بيانات التعريف للنموذج (إن وجدت). يتم رفض النتائج التي تكون أدنى من هذه القيمة. أي عدد عائم لم يتم ضبط الوضع
categoryAllowlist تضبط هذه السياسة القائمة الاختيارية لأسماء الفئات المسموح بها. إذا لم تكن فارغة، سيتم وضع نتائج التصنيف التي لا يوجد اسم فئته بها في هذه المجموعة بفلترته. ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. لا يمكن لأحد الطرفين استخدام هذا الخيار إلا بعد استخدام categoryDenylist. يؤدي كلا الخيارين إلى خطأ. أي سلاسل لم يتم ضبط الوضع
categoryDenylist تحدِّد هذه السياسة القائمة الاختيارية لأسماء الفئات غير المسموح بها. في حال حذف نتائج التصنيف التي يكون اسم فئتها في هذه المجموعة غير فارغة، ستتم فلترتها . ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. يتوفّر هذا الخيار حصرية مع categoryAllowlist واستخدام النتيجتين معًا إلى حدوث خطأ. أي سلاسل لم يتم ضبط الوضع

تجهيز البيانات

يعمل "مصنِّف النص" مع البيانات النصية. تتعامل المهمة مع إدخال البيانات المعالجة المسبقة، بما في ذلك الترميز والمعالجة المسبقة لـ Tenor.

تتم معالجة جميع عمليات المعالجة المسبقة ضمن الدالة 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 Dispatch أو 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 ملف في نموذج الرمز البرمجي الذي يوضح كيفية عرض نتائج الرصد الذي تم إرجاعه من المهمة.