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

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

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

कोड का उदाहरण

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

अगर Raspबेरी Pi के लिए टेक्स्ट क्लासिफ़ायर लागू किया जा रहा है, तो Raspबेरी Pi का उदाहरण ऐप्लिकेशन देखें.

सेटअप

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

पैकेज

टेक्स्ट की कैटगरी तय करने वाला टूल, MediaPipe पीआईपी पैकेज का इस्तेमाल करता है. इन डिपेंडेंसी को इनके साथ इंस्टॉल किया जा सकता है:

$ python -m pip install mediapipe

इंपोर्ट

Text Classifier टास्क फ़ंक्शन को ऐक्सेस करने के लिए, नीचे दी गई क्लास इंपोर्ट करें:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

मॉडल

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

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

model_path = '/absolute/path/to/text_classifier.tflite'

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

base_options = BaseOptions(model_asset_path=model_path)

टास्क बनाएं

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

नीचे दिया गया कोड इस टास्क को बनाने और कॉन्फ़िगर करने का तरीका बताता है.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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

इस टास्क में, Android ऐप्लिकेशन के कॉन्फ़िगरेशन के ये विकल्प मौजूद हैं:

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

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

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

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

input_text = 'The input text to be classified.'

टास्क चलाएं

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

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

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

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

टेक्स्ट क्लासिफ़ायर, इनपुट टेक्स्ट के लिए संभावित कैटगरी की सूची वाले 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".