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

MediaPipe लैंग्वेज डिटेक्टर टास्क से, आपको किसी टेक्स्ट की भाषा पहचानने में मदद मिलती है. ये निर्देश आपको Android ऐप्लिकेशन के साथ भाषा डिटेक्टर का इस्तेमाल करने का तरीका दिखाते हैं. कोड इन निर्देशों में बताया गया सैंपल, यहां उपलब्ध है GitHub.

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

कोड का उदाहरण

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

कोड डाउनलोड करें

नीचे दिए गए निर्देशों में आपको उदाहरण की स्थानीय कॉपी बनाने का तरीका बताया गया है git वर्शन कंट्रोल कमांड लाइन टूल का इस्तेमाल करके, कोड बनाना शुरू करें.

उदाहरण कोड डाउनलोड करने के लिए:

  1. नीचे दिए गए कमांड का इस्तेमाल करके git रिपॉज़िटरी का क्लोन बनाएं:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. इसके अलावा, स्पार्स चेकआउट का इस्तेमाल करने के लिए अपना git इंस्टेंस कॉन्फ़िगर करें, इसलिए आपके पास सिर्फ़ भाषा डिटेक्टर के उदाहरण ऐप्लिकेशन की फ़ाइलें हैं:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Android Studio पर उदाहरण देखने और सेटअप करने का तरीका जानने के लिए, उदाहरण के तौर पर दिए गए कोड को सेटअप करने के निर्देश Android के लिए सेटअप गाइड.

मुख्य कॉम्पोनेंट

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

  • LanguageDetectorHelper.kt - भाषा की पहचान करने वाले टूल को शुरू करता है और मॉडल चुनने का काम मैनेज करता है.
  • ResultsAdapter.kt - पहचान के नतीजों को हैंडल और फ़ॉर्मैट करता है.
  • MainActivity.kt - ऐप्लिकेशन लागू करता है, जिसमें LanguageDetectorHelper को कॉल करना और ResultsAdapter.

सेटअप

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

डिपेंडेंसी

भाषा डिटेक्टर, com.google.mediapipe:tasks-text लाइब्रेरी का इस्तेमाल करता है. इसे जोड़ें आपके Android ऐप्लिकेशन डेवलपमेंट प्रोजेक्ट की build.gradle फ़ाइल पर निर्भर है. इस कोड की मदद से, ज़रूरी डिपेंडेंसी इंपोर्ट की जा सकती हैं:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

मॉडल

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

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

<dev-project-root>/src/main/assets

ModelName पैरामीटर में मॉडल का पाथ तय करें.

टास्क बनाएं

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

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

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

टास्क बनाने के तरीके का उदाहरण देखने के लिए, कोड के उदाहरण का इस्तेमाल करें LanguageDetectorHelper क्लास initDetector() फ़ंक्शन का इस्तेमाल करें.

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

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

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

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

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

String inputText = "Some input text for the language detector";

टास्क को पूरा करें

लैंग्वेज डिटेक्टर, इनपुट को प्रोसेस करने के लिए LanguageDetector.detect() तरीके का इस्तेमाल करता है टेक्स्ट के लिए इस्तेमाल किया जा सकता है. आपको एक अलग एक्ज़ीक्यूशन का इस्तेमाल करना चाहिए Android उपयोगकर्ता को ब्लॉक करने से बचने के लिए, पहचान करने की प्रोसेस लागू करने के लिए थ्रेड इंटरफ़ेस थ्रेड खोलें.

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

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

टास्क को चलाने का तरीका, कोड के उदाहरण में देखा जा सकता है LanguageDetectorHelper क्लास detect() फ़ंक्शन का इस्तेमाल करें.

नतीजों को हैंडल करना और दिखाना

भाषा डिटेक्टर से 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.".

कोड के उदाहरण में, नतीजे दिखाने का एक उदाहरण दिया गया है ResultsAdapter क्लास और ViewHolder इनर क्लास.