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، بنیادی کاموں کے لیے 85% سے زیادہ درستگی برقرار رکھتے ہوئے، اسی طرح کے کلاؤڈ حل سے 3–5 گنا تیزی سے درخواستوں پر کارروائی کرتا ہے۔ فریم ورک 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 → متعلق فعل۔ لیماٹائزیشن اور تقریر کے حصوں کو ملا کر، آپ ایک سمارٹ تلاش بنا سکتے ہیں جو دوڑتی بلیوں کو دوڑ بلی کی query سے ڈھونڈے۔
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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں