نیچرل لینگوئج پروسیسنگ: مضمون میں سے عمل (ایکشن) اور کردارکی تشخیص

عباس اعوان

محفلین
بنیادی نوعیت کے عمل سے شروع کرتے ہیں۔
ایک مضمون یا کہانی میں سے ایکشن کیسے اخذ کیا جائے ؟
اور یہ بات کیسے معلوم کی جائے کہ یہ ایکشن کس کردار(Entity) سے متعلق ہے۔
مثال: میرے کوڈ میں چند فنکشنز ہیں
کوڈ:
func walkForward()
func walkBackwards()
func jump()
func lookLeft()
func lookRight()
func crouch()
اب اگر میں مندرجہ ذیل مضمون لکھتا ہوں:
Tom looked left and he noticed Harry. They both started to walk towards each other
تو اس کو مندرجہ بالا یا مزید فنکشنز میں کس طرح ڈھالا جائے ؟
نیز یہ کس طرح معلوم کیا جائے کہ ایکشن کس کرادر سے متعلق ہے؟
 

الف نظامی

لائبریرین
بنیادی نوعیت کے عمل سے شروع کرتے ہیں۔
ایک مضمون یا کہانی میں سے ایکشن کیسے اخذ کیا جائے ؟
اور یہ بات کیسے معلوم کی جائے کہ یہ ایکشن کس کردار(Entity) سے متعلق ہے۔
مثال: میرے کوڈ میں چند فنکشنز ہیں
کوڈ:
func walkForward()
func walkBackwards()
func jump()
func lookLeft()
func lookRight()
func crouch()
اب اگر میں مندرجہ ذیل مضمون لکھتا ہوں:

تو اس کو مندرجہ بالا یا مزید فنکشنز میں کس طرح ڈھالا جائے ؟
نیز یہ کس طرح معلوم کیا جائے کہ ایکشن کس کرادر سے متعلق ہے؟
ان پٹ کمانڈز کو پارس کرنا ہوگا۔ اگر ان پٹ کسی مارک اپ لینگویج کی فارمیٹ میں ہو تو زیادہ مناسب ہے کہ اس صورت میں پارسنگ آسان ہوگی۔
 

عباس اعوان

محفلین
ان پٹ کمانڈز کو پارس کرنا ہوگا۔ اگر ان پٹ کسی مارک اپ لینگویج کی فارمیٹ میں ہو تو زیادہ مناسب ہے کہ اس صورت میں پارسنگ آسان ہوگی۔
ان پٹ کمانڈز کا وجود نہیں ہے۔
ہمیں عام انسانی زبان میں لکھے گئے متن میں سے یہ سب کچھ تلاش کرنا ہے۔
 

الف نظامی

لائبریرین
ان پٹ کمانڈز کا وجود نہیں ہے۔
ہمیں عام انسانی زبان میں لکھے گئے متن میں سے یہ سب کچھ تلاش کرنا ہے۔
entities اور actions کی لسٹ بنالیں اور ان کی بنیاد پر جملے کو پارس کیجیے اور مطلوبہ روبوٹس پر مطلوبہ حرکت اپلائی کر لیں۔
 

عباس اعوان

محفلین
entities اور actions کی لسٹ بنالیں اور ان کی بنیاد پر جملے کو پارس کیجیے اور مطلوبہ روبوٹس پر مطلوبہ حرکت اپلائی کر لیں۔
لسٹ پہلے مراسلے میں موجود ہے۔
مندرجہ ذیل جملہ کس طرح کمانڈز میں تبدیل ہو گا؟
Tom looked left and he noticed Harry. They both started to walk towards each other
 

محمد سعد

محفلین
میرا نیچرل لینگویج پراسیسنگ میں تو کوئی تجربہ نہیں ہے۔ لیکن پروگرامر کے نکتہ نظر سے، اگر آپ look کا فنکشن بنا کر رائٹ یا لیفٹ اسے آرگومنٹ کے طور پر پاس کریں تو کیا وہ بہتر نہیں ہو گا؟
 

دوست

محفلین
جس طرح کی آؤٹ پُٹ کی ڈیمانڈ آپ کر رہے ہیں اس کیلئے نیورل نیٹ ورکس ہی مناسب حل لگ رہے ہیں۔ اس کام کے لیے آپ کے پاس پہلے کافی سارا ڈیٹا ہونا چاہئے۔ چونکہ آپ کہانیوں سے کچھ آپ نکالنا چاہتے ہیں تو اس کے لیے بہت سی کہانیاں ٹیکسٹ کی صورت میں آپ کے پاس ہونی چاہئیں اور اس کے بعد متعلقہ جملوں کو نیورل نیٹ ورک کے لیے مارک کیا جائے گا جس کے بعد نیورل نیٹورک کی ٹریننگ ہوگی۔ اور اس کے بعد پتہ چلے گا کہ وہ متعلقہ حصوں کی شناخت کے قابل ہے یا نہیں۔ یاد رہے کہ میں اس معاملے میں قطعاً مبتدی ہوں اور مندرجہ بالا معلومات حال ہی میں لئے گئے ایک سمر سکول کی وجہ سے دینے کے قابل ہوں۔ مزید معلومات کے لیے انٹرنیٹ پر ڈیپ لرننگ اور نیورل نیٹورکس کے حوالے سے تلاش کریں۔ اس کے لیے آپ کو کورسیرا ڈاٹ آرگ پر کورسز بھی مل جائیں گے۔
 

دوست

محفلین
مندرجہ بالا کے ہمراہ آپ کا مسئلہ اچھی خاصی ریسرچ کا متقاضی ہے۔ یعنی لسانیات جاننے والا بندہ آپ یعنی کمپیوٹر جاننے والے بندے کے ہمراہ بیٹھ،ے آپ کا مسئلہ سمجھے اور پھر اس کے لئے نیچرل لینگویج پروسیسنگ کے موجودہ حل اور طریقوں کی روشنی میں میں ایک طریقہ کار تجویز اور نافذ کرے۔ بنیادی طور پر یہ کمپیوٹیشنل لنگوئسٹکس کا کام ہے، جو ہر دو اطراف کا علم رکھتا ہو۔
 

دوست

محفلین
ایک جملے میں سے اگر ایکشن یعنی فیل نکالنا ہو تو اس کا طریقہ کچھ زیادہ پیچیدہ نہیں ہے۔ متن کو پہلے پارٹ آف سپیچ ٹیگنگ سے گزارا جائے اس کے بعد سبجیکٹ یعنی فاعل اور ورب یعنی فعل کو ریگولر ایکسپریشن کے ذریعے میچ کر لیا جائے۔
کہانی اگر مکالموں پر مشتمل ہو اور ہر مکالمے کے شروع میں متعلقہ کردار کا نام ہو تو اوپر والی مثال کو اس پر بھی منطبق کیا جا سکتا ہے۔ لیکن اس کے علاوہ اگر صفحہ کے شروع میں کردار کا نام ہو اور صفحے کے آخر میں اس نے کچھ کام سر انجام دیا ہو تو اسے نکالنا بہت مشکل ہو گا۔
 

دوست

محفلین
نیچرل لینگویج پروسیسنگ کا تجربہ حاصل کرنا پڑے گا چونکہ اس کے بغیر نہ کوئی حل سمجھ آ سکتا ہے، اور نہ آپ اپنے مسئلے کو حقیقت پسندانہ انداز سے اور دستیاب طریقوں (جیساکہ نیورل نیٹ ورکس) کے حساب ڈیفائن کر سکتے ہیں۔
 

محمد سعد

محفلین
اگر یوزر انپٹ کا سکوپ بہت محدود ہے تو عین ممکن ہے کہ ہمیں نیورل نیٹورکس جیسے کسی بھاری بھرکم ٹول کی ضرورت نہ پڑے۔

مثلاً
Tom looked left and he noticed Harry.
یہاں پر پہلے تو اگر and کو، یا عمومی طور پر کسی بھی conjunction کو، ایک مارکر کے طور پر استعمال کرتے ہوئے جملے کے دونوں حصوں کو الگ الگ کر لیا جائے۔
Tom looked left
he noticed Harry

اس کیس میں یہاں پہلا جملہ subject verb adverb
جبکہ دوسرا subject verb object کی ساخت رکھتا ہے۔

اگر، جیسا کہ میں نے کہا کہ look کا فنکشن لیفٹ یا رائٹ کو آرگومنٹ کے طور پر لے تو ایسی صورت میں آپ سیدھا سیدھا ورب کو فنکشن کے ساتھ میپ کر دیں گے اور ایڈورب اس کا آرگومنٹ ہو جائے گا۔ مسئلے کا لاجیکل سٹرکچر اچھا بن جائے گا۔
دوسرے حصے میں he ہے۔ اس کا پتہ لگانے کے لیے مدد پہلے حصے سے لی جائے کہ یہ کس کی جانب اشارہ کرتا ہے۔
اگر he نہ بھی ہوتا تو آپ دیکھتے کہ کنجنکشن کے بعد سیدھا کوئی ورب آ رہا ہے۔ جس کا مطلب یہ کہ اشارہ جملے کے پہلے حصے کے سبجیکٹ کی طرف ہے۔

They both started to walk towards each other.
یہاں they ایک بار پھر پروناؤن ہے تو آپ کو ایک بار پھر گزشتہ جملے سے مدد لینی پڑے گی۔ آسان طریقہ یہ ہو گا کہ اس سے پہلے والے جملے میں موجود سب نام اکٹھے کر کے انہیں they فرض کر لیا جائے۔ اگر گزشتہ جملے میں بھی they تھا تو ایک قدم اور پیچھے چلا جائے۔ اگلے لفظ both کو پراسیس کرنا ہے یا نہیں کرنا، اس کا انحصار اس بات پر ہے کہ آپ کوڈ کی پیچیدگی کن حدود کے اندر رکھنا چاہتے ہیں۔
اس سے آگے started to چونکہ کسی فعل کا شروع کرنا ظاہر کرتا ہے تو آپ اس حصے کو نظر انداز کر کے سیدھا فعل پر جا سکتے ہیں جو کہ ہے walk۔
یہاں بھی بہتر ہو گا کہ واک کے لیے جو آپ نے فنکشن تیار کیے ہیں، ان کو ایک ہی walk فنکشن بنا کر فوروارڈ اور بیک وارڈ اس کے آرگومنٹ کے طور پر پاس کریں۔ ایسی صورت میں مسئلے کا سٹرکچر تھوڑا سا بہتر ہو جائے گا اور سمت کو آپ اور طریقوں سے کیلکولیٹ کر کے آرگومنٹ میں پاس کر دیں گے۔
اس کیس میں ورب کو فنکشن میں بدلتے ہوئے ہمیں walk سے آگے سمت معلوم کرنی ہو گی۔ اس کے ایک سے زائد طریقے ہو سکتے ہیں۔ یا تو سیدھا سیدھا سمت لکھی ہو گی۔ یا پھر کسی preposition کے ذریعے سمت کا تعین کیا گیا ہو گا۔
پہلی صورت میں آپ سیدھا وہی سمت آرگومنٹ کو پاس کر دیں گے۔ دوسری صورت میں آپ کو دونوں کرداروں کے بیچ کا تعلق بھی پروگرام کی سٹیٹ میں رکھنا پڑے گا۔ دونوں کی پوزیشن ایک دوسرے کے لحاظ سے کیا ہے، دونوں کا رخ کس جانب ہے، وغیرہ۔
چونکہ یہاں دونوں کو ایک دوسرے کے قریب آنا ہے تو کیلکولیٹ کرنا پڑے گا کہ کون سا سادہ ترین راستہ انہیں ایک دوسرے کی جانب لے جاتا ہے۔

مجھے کمپیوٹیشنل لنگوئسٹکس کی ٹرمنالوجی سے واقفیت تو نہیں لیکن مجھے محسوس ہو رہا ہے کہ پارٹ آف سپیچ ٹیگنگ ہی کا اس میں بنیادی کردار ہو گا۔
 

سید ذیشان

محفلین
میری ایک دوست سے اس پر بات ہوئی ہے، جنہوں نے نیچرل لینگویج پروسسنگ پر کافی کام کیا ہے۔ ان کے مطابق یہ entity intent extraction پرابلم ہے جو کہ مندرجہ ذیل لائبریری سے بخوبی حل ہو سکتا ہے: Language Support اس کے لئے تھوڑی سی ٹریننگ البتہ درکار ہوگی۔

اس کے علاوہ انگریزی زبان کے لئے MS LUIS کا بھی استعمال کیا جا سکتا ہے۔
 

دوست

محفلین
ورڈ ایمبیڈنگز یعنی الفاظ کے باہمی تعلق کو ریاضیاتی ویکٹرز کی صورت میں ڈھالنا، یہ کام نیورل نیٹ ورکس سے ہی ہو گا۔ اس سے زیادہ یہ لائبریری کیا کر سکتی ہے اس کے لیے ڈاکومنٹیشن میں اترنا پڑے گا۔
یادش بخیر 2013 میں جب گوگل کے محققین نے ورڈ ایمبیڈنگز کے میدان میں انقلابی نوعیت کا پیپر شائع کیا تو ابن سعید نے اس طرف توجہ دلائی تھی، آج چھ سات برس بعد پتہ چلا ہے ورڈ ویکٹرز کیا تھے۔
 

عباس اعوان

محفلین
جس طرح کی آؤٹ پُٹ کی ڈیمانڈ آپ کر رہے ہیں اس کیلئے نیورل نیٹ ورکس ہی مناسب حل لگ رہے ہیں۔ اس کام کے لیے آپ کے پاس پہلے کافی سارا ڈیٹا ہونا چاہئے۔ چونکہ آپ کہانیوں سے کچھ آپ نکالنا چاہتے ہیں تو اس کے لیے بہت سی کہانیاں ٹیکسٹ کی صورت میں آپ کے پاس ہونی چاہئیں اور اس کے بعد متعلقہ جملوں کو نیورل نیٹ ورک کے لیے مارک کیا جائے گا جس کے بعد نیورل نیٹورک کی ٹریننگ ہوگی۔ اور اس کے بعد پتہ چلے گا کہ وہ متعلقہ حصوں کی شناخت کے قابل ہے یا نہیں۔ یاد رہے کہ میں اس معاملے میں قطعاً مبتدی ہوں اور مندرجہ بالا معلومات حال ہی میں لئے گئے ایک سمر سکول کی وجہ سے دینے کے قابل ہوں۔ مزید معلومات کے لیے انٹرنیٹ پر ڈیپ لرننگ اور نیورل نیٹورکس کے حوالے سے تلاش کریں۔ اس کے لیے آپ کو کورسیرا ڈاٹ آرگ پر کورسز بھی مل جائیں گے۔
بیچلرز میں اے آئی اور ماسٹرز میں نیورل نیٹورک اور ایکسپرٹ سسٹمز پڑھنے کے بعد یہ اندازاہ تو تھا کہ کسی مشین لرننگ ماڈل کی ضرورت پڑ سکتی ہے۔ نیورل نیٹورک اس کام کے لیے بہتر ہے یا نہیں، اس کے لیے تجربات کرنے پڑیں گے۔
 

عباس اعوان

محفلین
مندرجہ بالا کے ہمراہ آپ کا مسئلہ اچھی خاصی ریسرچ کا متقاضی ہے۔ یعنی لسانیات جاننے والا بندہ آپ یعنی کمپیوٹر جاننے والے بندے کے ہمراہ بیٹھ،ے آپ کا مسئلہ سمجھے اور پھر اس کے لئے نیچرل لینگویج پروسیسنگ کے موجودہ حل اور طریقوں کی روشنی میں میں ایک طریقہ کار تجویز اور نافذ کرے۔ بنیادی طور پر یہ کمپیوٹیشنل لنگوئسٹکس کا کام ہے، جو ہر دو اطراف کا علم رکھتا ہو۔
میرے خیال میں اس پر کافی کام ہو چکا ہوا ہوگا۔ امید ہے کہ ہمیں نئے سرے سے پہیے کو ایجاد کرنے کی ضرورت نہیں پڑے گی۔
 

عباس اعوان

محفلین
میرا نیچرل لینگویج پراسیسنگ میں تو کوئی تجربہ نہیں ہے۔ لیکن پروگرامر کے نکتہ نظر سے، اگر آپ look کا فنکشن بنا کر رائٹ یا لیفٹ اسے آرگومنٹ کے طور پر پاس کریں تو کیا وہ بہتر نہیں ہو گا؟
اگر یوزر انپٹ کا سکوپ بہت محدود ہے تو عین ممکن ہے کہ ہمیں نیورل نیٹورکس جیسے کسی بھاری بھرکم ٹول کی ضرورت نہ پڑے۔

مثلاً
Tom looked left and he noticed Harry.
یہاں پر پہلے تو اگر and کو، یا عمومی طور پر کسی بھی conjunction کو، ایک مارکر کے طور پر استعمال کرتے ہوئے جملے کے دونوں حصوں کو الگ الگ کر لیا جائے۔
Tom looked left
he noticed Harry

اس کیس میں یہاں پہلا جملہ subject verb adverb
جبکہ دوسرا subject verb object کی ساخت رکھتا ہے۔

اگر، جیسا کہ میں نے کہا کہ look کا فنکشن لیفٹ یا رائٹ کو آرگومنٹ کے طور پر لے تو ایسی صورت میں آپ سیدھا سیدھا ورب کو فنکشن کے ساتھ میپ کر دیں گے اور ایڈورب اس کا آرگومنٹ ہو جائے گا۔ مسئلے کا لاجیکل سٹرکچر اچھا بن جائے گا۔
دوسرے حصے میں he ہے۔ اس کا پتہ لگانے کے لیے مدد پہلے حصے سے لی جائے کہ یہ کس کی جانب اشارہ کرتا ہے۔
اگر he نہ بھی ہوتا تو آپ دیکھتے کہ کنجنکشن کے بعد سیدھا کوئی ورب آ رہا ہے۔ جس کا مطلب یہ کہ اشارہ جملے کے پہلے حصے کے سبجیکٹ کی طرف ہے۔

They both started to walk towards each other.
یہاں they ایک بار پھر پروناؤن ہے تو آپ کو ایک بار پھر گزشتہ جملے سے مدد لینی پڑے گی۔ آسان طریقہ یہ ہو گا کہ اس سے پہلے والے جملے میں موجود سب نام اکٹھے کر کے انہیں they فرض کر لیا جائے۔ اگر گزشتہ جملے میں بھی they تھا تو ایک قدم اور پیچھے چلا جائے۔ اگلے لفظ both کو پراسیس کرنا ہے یا نہیں کرنا، اس کا انحصار اس بات پر ہے کہ آپ کوڈ کی پیچیدگی کن حدود کے اندر رکھنا چاہتے ہیں۔
اس سے آگے started to چونکہ کسی فعل کا شروع کرنا ظاہر کرتا ہے تو آپ اس حصے کو نظر انداز کر کے سیدھا فعل پر جا سکتے ہیں جو کہ ہے walk۔
یہاں بھی بہتر ہو گا کہ واک کے لیے جو آپ نے فنکشن تیار کیے ہیں، ان کو ایک ہی walk فنکشن بنا کر فوروارڈ اور بیک وارڈ اس کے آرگومنٹ کے طور پر پاس کریں۔ ایسی صورت میں مسئلے کا سٹرکچر تھوڑا سا بہتر ہو جائے گا اور سمت کو آپ اور طریقوں سے کیلکولیٹ کر کے آرگومنٹ میں پاس کر دیں گے۔
اس کیس میں ورب کو فنکشن میں بدلتے ہوئے ہمیں walk سے آگے سمت معلوم کرنی ہو گی۔ اس کے ایک سے زائد طریقے ہو سکتے ہیں۔ یا تو سیدھا سیدھا سمت لکھی ہو گی۔ یا پھر کسی preposition کے ذریعے سمت کا تعین کیا گیا ہو گا۔
پہلی صورت میں آپ سیدھا وہی سمت آرگومنٹ کو پاس کر دیں گے۔ دوسری صورت میں آپ کو دونوں کرداروں کے بیچ کا تعلق بھی پروگرام کی سٹیٹ میں رکھنا پڑے گا۔ دونوں کی پوزیشن ایک دوسرے کے لحاظ سے کیا ہے، دونوں کا رخ کس جانب ہے، وغیرہ۔
چونکہ یہاں دونوں کو ایک دوسرے کے قریب آنا ہے تو کیلکولیٹ کرنا پڑے گا کہ کون سا سادہ ترین راستہ انہیں ایک دوسرے کی جانب لے جاتا ہے۔

مجھے کمپیوٹیشنل لنگوئسٹکس کی ٹرمنالوجی سے واقفیت تو نہیں لیکن مجھے محسوس ہو رہا ہے کہ پارٹ آف سپیچ ٹیگنگ ہی کا اس میں بنیادی کردار ہو گا۔
بہت شکریہ سعد۔
یہ ایک قابل عمل طریقہ ہے۔
جیسا کہ دوسرےمراسلے کے شروع میں آپ نے کہا کہ اگر یوزر ان پٹ کا سکوپ محدود ہے تو ہمیں ذہین پروگرام کی ضرورت نہیں پڑے گی۔ لیکن ہمارے کیس میں ایسا نہیں ہے۔یوزر جیسا بھی لکھے گا، ہمیں اس میں سےتمام معلومات نکالنا پڑیں گی۔
 
Top