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

MediaPipe Text Classifier टास्क की मदद से, टेक्स्ट को तय की गई कैटगरी में बांटा जा सकता है जैसे, अच्छी या बुरी भावना. कैटगरी, मॉडल के हिसाब से तय की जाती हैं मॉडल को ट्रेनिंग कैसे दी गई थी. ये निर्देश आपको टेक्स्ट की कैटगरी तय करने वाला वेब और JavaScript ऐप्लिकेशन.

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

कोड का उदाहरण

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

सेटअप

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

JavaScript पैकेज

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

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

npm install @mediapipe/tasks-text

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

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