NaturalLanguage Apple का एक फ्रेमवर्क है जो iOS और macOS उपकरणों पर प्राकृतिक भाषा प्रसंस्करण के लिए है, जो टोकनाइज़ेशन, भाषा पहचान, भाषण भाग टैगिंग, लेमेटाइज़ेशन और नामित इकाई पहचान तक पहुँच प्रदान करता है। Apple WWDC 2020 के अनुसार, फ्रेमवर्क सभी विश्लेषण डिवाइस पर ही करता है, बिना सर्वर पर डेटा भेजे, जो उपयोगकर्ता डेटा की गोपनीयता सुनिश्चित करता है। NaturalLanguage 30 से अधिक भाषाओं का समर्थन करता है और कस्टम NLP मॉडल के लिए Core ML के साथ एकीकृत होता है।
मुख्य बिंदु
NaturalLanguage (NL) Apple का एक मशीन लर्निंग फ्रेमवर्क है जो प्राकृतिक भाषा विश्लेषण के लिए है, जो Foundation का हिस्सा है और iOS 12+, macOS 10.14+ और watchOS 5+ पर उपलब्ध है। फ्रेमवर्क कस्टम मॉडल प्रशिक्षित करने की आवश्यकता के बिना उपयोग के लिए तैयार NLP क्षमताएँ प्रदान करता है।
क्लाउड NLP सेवाओं (Google Cloud NLP, Amazon Comprehend) के विपरीत, NaturalLanguage सभी विश्लेषण डिवाइस पर करता है। इसका मतलब है शून्य नेटवर्क विलंबता, ऑफ़लाइन संचालन और पूर्ण डेटा गोपनीयता — टेक्स्ट कभी भी उपयोगकर्ता के डिवाइस को नहीं छोड़ता।
Apple ML Research 2023 के अनुसार, A12+ चिप्स पर ऑन-डिवाइस NLP समान क्लाउड समाधानों की तुलना में 3–5 गुना तेज़ी से अनुरोधों को संसाधित करता है, जबकि बुनियादी कार्यों के लिए 85% से अधिक सटीकता बनाए रखता है। फ्रेमवर्क Neural Engine के लिए अनुकूलित है, जो आधुनिक उपकरणों पर प्रति सेकंड 100 अनुरोधों तक प्रसंस्करण में सक्षम है।
NaturalLanguage का उपयोग iOS अनुप्रयोगों में समीक्षा विश्लेषण, स्मार्ट खोज, ऑटोकम्प्लीट, सामग्री मॉडरेशन और असंरचित टेक्स्ट से संरचित डेटा निकालने के लिए किया जाता है। फ्रेमवर्क 30 से अधिक भाषाओं का समर्थन करता है, जिसमें रूसी, यूक्रेनी, तुर्की और अरबी शामिल हैं।
NLTokenizer टेक्स्ट को भाषाई इकाइयों में विभाजित करने के लिए एक क्लास है: शब्द, वाक्य, पैराग्राफ या दस्तावेज़। टोकनाइज़ेशन लगभग किसी भी NLP पाइपलाइन का पहला कदम है, और NaturalLanguage इसे तैयार प्रदान करता है।
NLTokenizer भाषा-विशिष्ट विशेषताओं को ध्यान में रखता है: यह जापानी (शब्दों के बीच कोई स्थान नहीं), अरबी (दाएँ-से-बाएँ लिपि) और चीनी (लॉगोग्राफ़िक लेखन) के लिए टोकनाइज़ेशन को सही ढंग से संभालता है। अंग्रेज़ी और रूसी के लिए, टोकनाइज़र रिक्त स्थान और विराम चिह्नों द्वारा काम करता है, लेकिन संकुचनों को ध्यान में रखता है (don't → do + n't)।
import NaturalLanguage
let text = "NaturalLanguage processes text on-device. It supports 30+ languages!"
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text
tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
print(text[range])
return true
}
वाक्य स्तर पर टोकनाइज़ेशन बड़े टेक्स्ट को आगे के विश्लेषण से पहले तार्किक ब्लॉकों में विभाजित करने के लिए उपयोगी है। NLTokenizer वाक्य सीमाएँ निर्धारित करेगा भले ही अंत में कोई अवधि न हो या प्रश्नवाचक वाक्य मौजूद हों।
let sentenceTokenizer = NLTokenizer(unit: .sentence)
sentenceTokenizer.string = text
sentenceTokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
print("Sentence: \\(text[range])")
return true
}
NLTokenizer NaturalLanguage की अन्य सभी क्षमताओं का आधार है। टोकनाइज़ेशन के बाद, टेक्स्ट भाषा पहचान, टैगिंग और लेमेटाइज़ेशन के लिए तैयार होता है।
NLLanguageRecognizer टेक्स्ट की भाषा निर्धारित करता है और विश्वास स्कोर के साथ सबसे संभावित विकल्प लौटाता है। फ्रेमवर्क 30 से अधिक भाषाओं का समर्थन करता है और किसी भी लंबाई के टेक्स्ट के साथ काम कर सकता है — एक शब्द से लेकर पूरे दस्तावेज़ तक।
NLLanguageRecognizer एल्गोरिदम कैरेक्टर n-grams का विश्लेषण करता है और उनकी तुलना भाषा प्रोफ़ाइलों से करता है। छोटे टेक्स्ट (50 कैरेक्टर तक) के लिए, सटीकता कम हो जाती है, इसलिए Apple विश्वसनीय भाषा पहचान के लिए कम से कम 100–200 कैरेक्टर सबमिट करने की सलाह देता है।
import NaturalLanguage
let recognizer = NLLanguageRecognizer()
recognizer.processString("Hello, how are you? I am learning NaturalLanguage.")
if let language = recognizer.dominantLanguage {
print("Dominant language: \\(language.rawValue)") // "ru"
}
let hypotheses = recognizer.languageHypotheses(withMaximum: 3)
for (lang, prob) in hypotheses {
print("\\(lang.rawValue): \\(prob)")
}
languageHypotheses विधि अवरोही क्रम में संभावनाओं के साथ भाषाओं का एक शब्दकोश लौटाती है। यह तब उपयोगी होता है जब टेक्स्ट में भाषाओं का मिश्रण हो या जब आपको उपयोगकर्ता को केवल प्रमुख भाषा के बजाय चुनने के लिए कई विकल्प दिखाने की आवश्यकता हो।
NaturalLanguage 100 कैरेक्टर या उससे अधिक के टेक्स्ट के लिए रूसी को 95% सटीकता से पहचानता है। छोटे टेक्स्ट (1–2 शब्द) के लिए, सटीकता 60–70% तक गिर जाती है — ऐसे मामलों में, languageHypotheses का उपयोग करना और शीर्ष 3 विकल्प दिखाना बेहतर होता है।
NLTagScheme भाषाई विश्लेषण के लिए टैगिंग योजनाएँ प्रदान करता है: भाषण के भाग (संज्ञा, क्रिया, विशेषण), लेमा (शब्द का मूल रूप), इकाई प्रकार (व्यक्ति, संगठन, स्थान) और अन्य श्रेणियाँ।
लेमेटाइज़ेशन एक शब्द को उसके शब्दकोश रूप में कम करता है: «दौड़ा» → «दौड़ना», «बेहतर» → «अच्छा», «books» → «book». यह खोज और टेक्स्ट विश्लेषण के लिए अत्यंत महत्वपूर्ण है — लेमेटाइज़ेशन के बिना, «बिल्ली» और «बिल्लियाँ» को अलग-अलग टोकन माना जाता है, जिससे NLP पाइपलाइनों की गुणवत्ता कम हो जाती है।
import NaturalLanguage
let tagger = NLTagger(tagSchemes: [.lemma, .lexicalClass])
tagger.string = "The cats were running quickly."
tagger.enumerateTags(in: tagger.string!.startIndex..<tagger.string!.endIndex,
unit: .word,
scheme: .lexicalClass) { tag, range in
print("\\(tagger.string![range]): \\(tag?.rawValue ?? "unknown")"
}
आउटपुट उदाहरण: cats → संज्ञा, were → क्रिया, quickly → क्रियाविशेषण। लेमेटाइज़ेशन और भाषण भागों को संयोजित करके, आप स्मार्ट खोज बना सकते हैं जो «दौड़ती बिल्लियाँ» को «दौड़ बिल्ली» क्वेरी से ढूँढता है।
NLTagScheme.lemma NaturalLanguage द्वारा समर्थित सभी भाषाओं के लिए काम करता है, जिसमें रूसी भी शामिल है। यह NLTagger को प्रत्येक भाषा के लिए अलग-अलग मॉडल लोड करने की आवश्यकता के बिना बहुभाषी अनुप्रयोगों के लिए एक बहुमुखी उपकरण बनाता है।
नामित इकाई पहचान (NER) टेक्स्ट से नामित इकाइयाँ निकालने का कार्य है: लोगों के नाम, संगठनों के नाम, भौगोलिक स्थान और व्यक्तिगत डेटा। NaturalLanguage NLTagScheme.nameType के माध्यम से NER का समर्थन करता है।
NLTagScheme.nameType तीन प्रकार की इकाइयों को अलग करता है: PersonalName, OrganizationName और PlaceName। यह समाचार, ईमेल और समीक्षाओं से संरचित डेटा का स्वचालित निष्कर्षण सक्षम करता है।
let nerTagger = NLTagger(tagSchemes: [.nameType])
nerTagger.string = "Tim Cook announced Apple's new headquarters in Cupertino."
nerTagger.enumerateTags(in: nerTagger.string!.startIndex..<nerTagger.string!.endIndex,
unit: .word,
scheme: .nameType) { tag, range in
if tag != nil {
print("\\(nerTagger.string![range]): \\(tag!.rawValue)"
}
}
परिणाम: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName। NaturalLanguage NER को कस्टम प्रशिक्षण की आवश्यकता नहीं है और यह अंग्रेज़ी, फ्रेंच, जर्मन, स्पेनिश और अन्य भाषाओं के लिए तुरंत काम करता है।
रूसी के लिए, NER समर्थित है लेकिन सटीकता कुछ कम है — अंग्रेज़ी के लिए 85% की तुलना में लगभग 70–75%। यदि रूसी के लिए उच्च सटीकता की आवश्यकता है, तो Apple Create ML का उपयोग करके अपने स्वयं के डेटा पर एक कस्टम Core ML मॉडल प्रशिक्षित करने की सलाह देता है।
NLModel प्रशिक्षित Core ML NLP मॉडल के साथ काम करने के लिए एक क्लास है, जिसमें Apple द्वारा पूर्व-प्रशिक्षित अंतर्निहित भावना विश्लेषण मॉडल शामिल है। मॉडल टेक्स्ट की भावना निर्धारित करता है: सकारात्मक, नकारात्मक या तटस्थ।
अंतर्निहित भावना विश्लेषण मॉडल App Store समीक्षाओं पर प्रशिक्षित है और अंग्रेज़ी, फ्रेंच, जर्मन, इतालवी, स्पेनिश, पुर्तगाली, चीनी और जापानी के लिए काम करता है। रूसी के लिए, मॉडल पूर्व-प्रशिक्षित नहीं है — आपको Create ML और अपने स्वयं के लेबल किए गए डेटा की आवश्यकता है।
import NaturalLanguage
let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "This app is amazing!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"
NLModel Create ML के माध्यम से प्रशिक्षित कस्टम मॉडल का भी समर्थन करता है। आप अपने स्वयं के डेटा (उत्पाद श्रेणियाँ, समर्थन टिकट प्रकार, भाषा शैलियाँ) पर एक टेक्स्ट वर्गीकरण मॉडल प्रशिक्षित कर सकते हैं और इसे उसी NLModel इंटरफ़ेस के माध्यम से उपयोग कर सकते हैं।
Apple Create ML दस्तावेज़ीकरण 2024 के अनुसार, एक कस्टम टेक्स्ट मॉडल 80–95% सटीकता प्राप्त करने के लिए 500–5000 उदाहरणों पर प्रशिक्षित होता है। NaturalLanguage मॉडल को एक बार लोड करता है और बाद के कॉल के लिए इसे कैश करता है, जिससे बार-बार अनुरोधों के लिए विलंबता कम हो जाती है।
| NLP कार्य | NaturalLanguage क्लास | रूसी समर्थन |
|---|---|---|
| टोकनाइज़ेशन | NLTokenizer | हाँ |
| भाषा पहचान | NLLanguageRecognizer | हाँ |
| लेमेटाइज़ेशन | NLTagger + .lemma | हाँ |
| भाषण भाग | NLTagger + .lexicalClass | हाँ |
| NER | NLTagger + .nameType | सीमित |
| भावना | NLModel (पूर्व-प्रशिक्षित) | नहीं |
अक्सर पूछे जाने वाले प्रश्न
NaturalLanguage प्रशिक्षण की आवश्यकता के बिना तैयार NLP मॉडल प्रदान करता है: टोकनाइज़ेशन, भाषा पहचान, NER। Core ML को अपने स्वयं के डेटा पर मॉडल प्रशिक्षित करने की आवश्यकता होती है और विशिष्ट कार्यों के लिए अधिक लचीलापन प्रदान करता है। NaturalLanguage बुनियादी तैयार कार्यों के लिए बेहतर है, जबकि Core ML अत्यधिक विशिष्ट कार्यों के लिए है।
हाँ, NaturalLanguage इंटरनेट कनेक्शन के बिना पूरी तरह से डिवाइस पर काम करता है। सभी मॉडल iOS और macOS में निर्मित हैं, और डेटा सर्वर को नहीं भेजा जाता है। यह क्लाउड NLP सेवाओं पर एक प्रमुख लाभ है जिन्हें नेटवर्क एक्सेस की आवश्यकता होती है और गोपनीयता जोखिम पैदा करती हैं।
NaturalLanguage 30 से अधिक भाषाओं का समर्थन करता है, जिसमें रूसी, अंग्रेज़ी, स्पेनिश, फ्रेंच, जर्मन, इतालवी, पुर्तगाली, चीनी, जापानी, कोरियाई, अरबी, तुर्की और यूक्रेनी शामिल हैं। सभी समर्थित भाषाओं के लिए टोकनाइज़ेशन और लेमेटाइज़ेशन सटीकता उच्च है, जबकि NER और भावना विश्लेषण मुख्य रूप से अंग्रेज़ी के लिए हैं।
Create ML का उपयोग करें — प्रोग्रामिंग के बिना मशीन लर्निंग मॉडल प्रशिक्षित करने के लिए Apple का एप्लिकेशन। एक लेबल किया गया डेटासेट (CSV या JSON) अपलोड करें, टेक्स्ट वर्गीकरण या टैगिंग कार्य चुनें, मॉडल को प्रशिक्षित करें और Core ML फ़ॉर्मेट (.mlmodel) में निर्यात करें। फिर कोड में NLModel(mlModel:) के माध्यम से मॉडल लोड करें।
NaturalLanguage iOS 12+, macOS 10.14+, watchOS 5+ और tvOS 12+ पर उपलब्ध है। A12+ चिप और Neural Engine वाले उपकरणों पर, प्रदर्शन अधिक होता है — हार्डवेयर-त्वरित मशीन लर्निंग के कारण टेक्स्ट प्रसंस्करण 3–5 गुना तेज़ होता है। पुराने उपकरणों (A11 और पहले) पर, फ्रेमवर्क काम करता है लेकिन धीमा है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें