वेब के लिए भाषा का पता लगाने की गाइड

MediaPipe Language Detector टास्क की मदद से, किसी टेक्स्ट की भाषा का पता लगाया जा सकता है. इन निर्देशों में, वेब और JavaScript ऐप्लिकेशन के लिए भाषा का पता लगाने वाली सुविधा का इस्तेमाल करने का तरीका बताया गया है. इन निर्देशों में बताया गया कोड सैंपल, GitHub पर उपलब्ध है.

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

कोड का उदाहरण

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

सेटअप

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

JavaScript पैकेज

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

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

npm install @mediapipe/tasks-text

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

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

मॉडल

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

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

<dev-project-root>/app/shared/models

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

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

टास्क बनाना

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

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

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

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

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

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

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

भाषा पहचानने की सुविधा, टेक्स्ट (string) डेटा के साथ काम करती है. यह टास्क, डेटा इनपुट की प्रीप्रोसेसिंग करता है. इसमें टोकनाइज़ेशन और टेंसर प्रीप्रोसेसिंग शामिल है. सभी प्रीप्रोसेसिंग, detect फ़ंक्शन में मैनेज की जाती है. इनपुट टेक्स्ट को पहले से प्रोसेस करने की ज़रूरत नहीं होती.

const inputText = "The input text for the detector.";

टास्क को रन करना

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

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

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

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

भाषा का पता लगाने वाला टास्क, LanguageDetectorResult आउटपुट करता है. इसमें भाषा के अनुमानों की सूची होती है. साथ ही, उन अनुमानों की संभावनाओं के बारे में भी जानकारी होती है. इस टास्क के आउटपुट डेटा का उदाहरण यहां दिया गया है:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

यह नतीजा, इनपुट टेक्स्ट पर मॉडल को चलाने से मिला है: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

इस टास्क के नतीजों को प्रोसेस करने और विज़ुअलाइज़ करने के लिए ज़रूरी कोड का उदाहरण देखने के लिए, उदाहरण देखें.