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 के लिए सेटअप गाइड देखें.

मुख्य कॉम्पोनेंट

टेक्स्ट क्लासिफ़ायर के उदाहरण के लिए, इन फ़ाइलों में ज़रूरी कोड शामिल है ऐप्लिकेशन:

  • TextClassifierHelper.swift: यह टेक्स्ट की कैटगरी तय करने वाले टूल को शुरू करता है और मॉडल चुनने के विकल्प को हैंडल करता है.
  • ViewController.swift: यूज़र इंटरफ़ेस (यूआई) को लागू करता है और नतीजों को फ़ॉर्मैट करता है.

सेटअप

इस सेक्शन में, आपके डेवलपमेंट एनवायरमेंट को सेट अप करने और टेक्स्ट क्लासिफ़ायर का इस्तेमाल करने के लिए कोड प्रोजेक्ट. अपना खाता सेट अप करने के बारे में MediaPipe टास्क के लिए डेवलपमेंट एनवायरमेंट. इसमें प्लैटफ़ॉर्म वर्शन भी शामिल है ज़रूरी शर्तों के बारे में जानने के लिए, iOS के लिए सेटअप गाइड देखें.

डिपेंडेंसी

टेक्स्ट क्लासिफ़ायर MediaPipeTasksText लाइब्रेरी का इस्तेमाल करता है, जिसे इंस्टॉल करना ज़रूरी होता है CocoaPods का इस्तेमाल करके. यह लाइब्रेरी Swift और Objective-C, दोनों ऐप्लिकेशन के साथ काम करती है इसके लिए, अलग से किसी भाषा के सेटअप की ज़रूरत नहीं होती.

macOS पर CocoaPods को इंस्टॉल करने के निर्देशों के लिए, CocoaPods को देखें इंस्टॉल करने की गाइड देखें. अपने ऐप्लिकेशन के लिए ज़रूरी पॉड के साथ Podfile बनाने का तरीका जानने के लिए, देखने के लिए, Google Play Store में CocoaPods.

नीचे दिए गए कोड का इस्तेमाल करके, Podfile में MediaPipeTasksText पॉड जोड़ें:

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

अगर आपके ऐप्लिकेशन में यूनिट टेस्ट टारगेट शामिल हैं, तो iOS सेट अप करने के बारे में ज़्यादा जानकारी पाएं Podfile.

मॉडल

MediaPipe Text Classifier टास्क के लिए, ट्रेन किया गया मॉडल होना ज़रूरी है इस टास्क को पूरा करें. इनके लिए उपलब्ध ट्रेन किए गए मॉडल के बारे में ज़्यादा जानकारी पाने के लिए टेक्स्ट क्लासिफ़ायर, टास्क की खास जानकारी मॉडल देखें सेक्शन में दिया गया है.

कोई मॉडल चुनें और डाउनलोड करें, और 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 सबसे ज़्यादा स्कोर वाले क्लासिफ़िकेशन नतीजों की वैकल्पिक ज़्यादा से ज़्यादा संख्या को इस पर सेट करता है वापसी. यदि < कोई समस्या नहीं है, तो सभी उपलब्ध नतीजे दिखाए जाएंगे. कोई भी धनात्मक संख्या -1
scoreThreshold अनुमान के लिए स्कोर का थ्रेशोल्ड सेट करता है, जो इसमें दिए गए स्कोर को ओवरराइड करता है मॉडल मेटाडेटा (अगर कोई है). इस वैल्यू से कम के नतीजे अस्वीकार कर दिए जाते हैं. कोई भी फ़्लोट सेट नहीं है
categoryAllowlist अनुमति वाली कैटगरी के नामों की वैकल्पिक सूची सेट करता है. अगर खाली नहीं है, ऐसे वर्गीकरण परिणाम होंगे जिनका श्रेणी नाम इस सेट में नहीं है फ़िल्टर करके बाहर किया गया. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता. यह विकल्प, categoryDenylist और इसका इस्तेमाल करने वाले उपयोगकर्ताओं के लिए अलग-अलग है दोनों में गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है
categoryDenylist ऐसी कैटगरी के नामों की वैकल्पिक सूची सेट करता है जिनकी अनुमति नहीं है. अगर आपने खाली नहीं है, इसलिए डेटा को अलग-अलग ग्रुप में बांटने के ऐसे नतीजे फ़िल्टर कर दिए जाएंगे जिनकी कैटगरी का नाम इस सेट में होगा बाहर. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता. यह विकल्प म्यूचुअली है सिर्फ़ categoryAllowlist इस्तेमाल करने पर, दोनों नतीजे इस्तेमाल करने में गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है

डेटा तैयार करें

टेक्स्ट क्लासिफ़ायर, टेक्स्ट डेटा के साथ काम करता है. यह टास्क, डेटा इनपुट मैनेज करता है प्री-प्रोसेसिंग, जिसमें टोकनाइज़ेशन और टेंसर प्री-प्रोसेसिंग शामिल है.

सभी प्री-प्रोसेसिंग को 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 फ़ाइल का उदाहरण, पहचान के नतीजों को दिखाने का तरीका बताता है टास्क से वापस लौटा गया है.