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

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

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

कोड का उदाहरण

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

सेटअप

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

JavaScript पैकेज

टेक्स्ट की कैटगरी तय करने वाला कोड, @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 टेक्स्ट क्लासिफ़ायर टास्क को एक प्रशिक्षित मॉडल की ज़रूरत होती है, जो इस टास्क के साथ काम कर सके. टेक्स्ट क्लासिफ़ायर के लिए उपलब्ध ट्रेनिंग मॉडल के बारे में ज़्यादा जानकारी के लिए, टास्क की खास जानकारी मॉडल सेक्शन देखें.

कोई मॉडल चुनें और उसे डाउनलोड करें और फिर उसे अपनी प्रोजेक्ट डायरेक्ट्री में स्टोर करें:

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

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

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

टास्क बनाएं

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

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

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

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

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

टास्क चलाएं

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

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

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

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

टेक्स्ट की कैटगरी तय करने वाला टूल, एक 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".