वेब के लिए टेक्स्ट क्लासिफ़िकेशन गाइड

MediaPipe Text Classifier टास्क की मदद से, टेक्स्ट को तय की गई कैटगरी में बांटा जा सकता है. जैसे, पॉज़िटिव या नेगेटिव सेंटीमेंट. कैटगरी, इस्तेमाल किए जा रहे मॉडल और उस मॉडल को ट्रेन करने के तरीके के हिसाब से तय की जाती हैं. इन निर्देशों में, वेब और JavaScript ऐप्लिकेशन के लिए Text Classifier का इस्तेमाल करने का तरीका बताया गया है.

डेमो देखकर, इस टास्क को ऐक्शन में देखा जा सकता है. इस टास्क की क्षमताओं, मॉडल, और कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानने के लिए, खास जानकारी देखें.

कोड का उदाहरण

Text Classifier के लिए दिए गए उदाहरण कोड में, इस टास्क को JavaScript में पूरी तरह से लागू करने का तरीका बताया गया है. इसका इस्तेमाल रेफ़रंस के तौर पर किया जा सकता है. इस कोड की मदद से, इस टास्क को टेस्ट किया जा सकता है. साथ ही, टेक्स्ट की कैटगरी तय करने वाला अपना ऐप्लिकेशन बनाया जा सकता है. Text Classifier उदाहरण को सिर्फ़ वेब ब्राउज़र का इस्तेमाल करके देखा, रन, और एडिट किया जा सकता है.

सेटअप

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

JavaScript पैकेज

Text Classifier का कोड, @mediapipe/tasks-text पैकेज के ज़रिए उपलब्ध है. इन लाइब्रेरी को प्लैटफ़ॉर्म सेटअप करने की प्लेटफ़ॉर्म गाइड में दिए गए लिंक से ढूंढा और डाउनलोड किया जा सकता है.

स्थानीय तौर पर स्टेजिंग के लिए, ज़रूरी पैकेज इंस्टॉल करने के लिए, इस निर्देश के साथ यह कोड इस्तेमाल करें:

npm install @mediapipe/tasks-text

अगर आपको किसी सर्वर पर डिप्लॉय करना है, तो कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) सेवा का इस्तेमाल किया जा सकता है. जैसे, jsDelivr. इसकी मदद से, एचटीएमएल पेज में सीधे कोड जोड़ा जा सकता है. इसके लिए, यह तरीका अपनाएं:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

मॉडल

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

कोई मॉडल चुनें और डाउनलोड करें. इसके बाद, उसे अपने प्रोजेक्ट डायरेक्ट्री में सेव करें:

<dev-project-root>/assets/bert_text_classifier.tflite

baseOptions ऑब्जेक्ट के modelAssetPath पैरामीटर के साथ, मॉडल का पाथ तय करें. जैसा कि यहां दिखाया गया है:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

टास्क बनाना

इन्फ़रंस रन करने के लिए टास्क तैयार करने के लिए, Text Classifier के TextClassifier.createFrom...() फ़ंक्शन में से किसी एक का इस्तेमाल करें. ट्रेन किए गए मॉडल की फ़ाइल के लिए, रिलेटिव या ऐब्सलूट पाथ के साथ createFromModelPath() फ़ंक्शन का इस्तेमाल किया जा सकता है. यहां दिए गए कोड के उदाहरण में, TextClassifier.createFromOptions() फ़ंक्शन का इस्तेमाल करने का तरीका बताया गया है. उपलब्ध कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन के विकल्प देखें.

यहां दिए गए कोड में, इस टास्क को बनाने और कॉन्फ़िगर करने का तरीका बताया गया है:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

कॉन्फ़िगरेशन के विकल्प

वेब और JavaScript ऐप्लिकेशन के लिए, इस टास्क में कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:

विकल्प का नाम ब्यौरा वैल्यू की रेंज डिफ़ॉल्ट वैल्यू
displayNamesLocale अगर टास्क के मॉडल के मेटाडेटा में डिसप्ले नेम उपलब्ध हैं, तो यह सेटिंग उन लेबल की भाषा सेट करती है जिनका इस्तेमाल डिसप्ले नेम के लिए किया जाता है. अंग्रेज़ी के लिए डिफ़ॉल्ट भाषा en है. TensorFlow Lite Metadata Writer API का इस्तेमाल करके, कस्टम मॉडल के मेटाडेटा में स्थानीय भाषा में लेबल जोड़े जा सकते हैं TensorFlow Lite Metadata Writer API लोकेल कोड en
maxResults यह सेटिंग, सबसे ज़्यादा स्कोर वाले कैटगरी तय करने के नतीजों की ज़्यादा से ज़्यादा संख्या सेट करती है. यह संख्या ज़रूरी नहीं है. अगर वैल्यू < 0 है, तो उपलब्ध सभी नतीजे दिखाए जाएंगे. कोई भी पॉज़िटिव नंबर -1
scoreThreshold यह सेटिंग, अनुमान के स्कोर का थ्रेशोल्ड सेट करती है. यह थ्रेशोल्ड, मॉडल के मेटाडेटा में दिए गए थ्रेशोल्ड (अगर कोई है) को बदल देता है. इस वैल्यू से कम स्कोर वाले नतीजे अस्वीकार कर दिए जाते हैं. कोई भी फ़्लोट सेट नहीं है
categoryAllowlist यह सेटिंग, अनुमति वाली कैटगरी के नामों की सूची सेट करती है. यह सूची ज़रूरी नहीं है. अगर यह सूची खाली नहीं है, तो कैटगरी तय करने के उन नतीजों को फ़िल्टर कर दिया जाएगा जिनकी कैटगरी का नाम इस सूची में नहीं है. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, categoryDenylist के साथ इस्तेमाल नहीं किया जा सकता. इन दोनों का इस्तेमाल करने पर गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है
categoryDenylist यह सेटिंग, उन कैटगरी के नामों की सूची सेट करती है जिनकी अनुमति नहीं है. यह सूची ज़रूरी नहीं है. अगर यह सूची खाली नहीं है, तो कैटगरी तय करने के उन नतीजों को फ़िल्टर कर दिया जाएगा जिनकी कैटगरी का नाम इस सूची में है. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, categoryAllowlist के साथ इस्तेमाल नहीं किया जा सकता. इन दोनों का इस्तेमाल करने पर गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है

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

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

सभी प्री-प्रोसेसिंग, classify() फ़ंक्शन के अंदर होती है. इनपुट टेक्स्ट की पहले से कोई अतिरिक्त प्री-प्रोसेसिंग करने की ज़रूरत नहीं होती.

const inputText = "The input text to be classified.";

टास्क रन करना

Text Classifier, इन्फ़रंस ट्रिगर करने के लिए classify() फ़ंक्शन का इस्तेमाल करता है. टेक्स्ट की कैटगरी तय करने के लिए, इसका मतलब है कि इनपुट टेक्स्ट के लिए संभावित कैटगरी दिखाना.

यहां दिए गए कोड में, टास्क मॉडल के साथ प्रोसेसिंग को लागू करने का तरीका बताया गया है.

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

नतीजों को मैनेज करना और दिखाना

Text Classifier, 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

यह नतीजा, इनपुट टेक्स्ट: "an imperfect but overall entertaining mystery" पर BERT-classifier को रन करके मिला है.