قریب ترین میچ کے لیے ایمبیڈنگز کیسے تلاش کریں۔

Qryb Tryn Mych K Ly Aymby Ngz Kys Tlash Kry



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

نحو

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







ان ذکر کردہ نکات سے، ہم ان ماڈلز کو جانتے ہیں جن کا استعمال ہم ایمبیڈنگز کے لیے مماثلت کا پتہ لگانے کے لیے کر سکتے ہیں۔ اب، ہم ان ماڈلز میں سے ہر ایک کو استعمال کرنا سیکھیں گے اور ان میں سے ہر ایک پر انفرادی مثالوں کو لاگو کریں گے۔



مثال 1: ورڈ ایمبیڈنگز کے ذریعے قریب ترین میچ کو ایمبیڈ کرنا

اس سے پہلے کہ ہم مماثلت کے مماثلت کے لیے لفظ ایمبیڈنگز کو نافذ کریں، ہمیں لفظ ایمبیڈنگز کے بارے میں جاننے کی ضرورت ہے۔ ورڈ ایمبیڈنگ متن کو ویکٹر (عددی اقدار) کی شکل میں تبدیل کرنے کا عمل ہے کیونکہ ہمارے سسٹم صرف عددی ہندسوں کی شکل میں ان پٹ کو سمجھتے ہیں۔



اس کام کو کرنے کے اور بھی کئی طریقے ہیں جن میں ون ہاٹ انکوڈنگ شامل ہے، لیکن ہم ایمبیڈنگز کا لفظ استعمال کریں گے۔ اس طرح، ایمبیڈنگ کو عصبی نیٹ ورک کے ماڈلز (مثلاً word2vec یا Glove) کے ذریعے متن سے سیکھا جا رہا ہے۔ الفاظ کو اعلی جہتی ویکٹر اسپیس میں نقشہ بنایا گیا ہے۔ وہ تمام الفاظ جو سیاق و سباق میں ملتے جلتے ہیں قریب ترین نکات پر نقش کیے گئے ہیں۔ اس طرح، سرایت متن میں مختلف الفاظ کے درمیان تعلقات اور تشبیہات کو پکڑ سکتی ہے۔





آئیے کسی جملے کے لیے ایک لفظ ایمبیڈنگ بناتے ہیں۔ لفظ ایمبیڈنگ بنانے کے لیے، Python 'gensim' فریم ورک فراہم کرتا ہے۔ Gensim ایک لائبریری پیکیج ہے جو 'word2vec' ماڈل کے استعمال کی اجازت دیتا ہے جو سرایت کرنے میں مدد کرتا ہے۔ ایمبیڈنگ کو لاگو کرنے کے لیے، ہم سب سے پہلے اپنے Python کمپائلرز پر gensim انسٹال کرنا یقینی بناتے ہیں۔ پھر، gensim سے، ہم 'word2vec' ماڈل درآمد کرتے ہیں۔

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



'word2vec' ماڈل کو درآمد کرنے کے بعد، ہم 'ٹیکسٹ' کی وضاحت کرتے ہیں۔ ایک بار جب ہم متن کی وضاحت کر دیتے ہیں، تب ہم اس 'word2vec' ماڈل کو متن کے ساتھ پاس کر کے تربیت دیتے ہیں اور کم از کم شمار '1' کے برابر سیٹ کرتے ہیں۔ اب، ہم اس تربیت یافتہ 'word2vec.wv.most_similar('consume')' ماڈل کو کہتے ہیں اور اس لفظ کو فیڈ کرتے ہیں جس کے قریب ترین ایمبیڈنگز کو ہم چیک کرنا چاہتے ہیں کہ اس مثال میں 'consume' ہے۔ ایمبیڈنگ کے نتائج کو چیک کرنے کے لیے، ہم ماڈل سے آؤٹ پٹ پرنٹ کرتے ہیں:

سے ایک قوم کے طور پر ماڈلز درآمد Word2Vec
متن = [ [ 'خرگوش' , 'ہے' , 'دانت' ] ]
ماڈل = Word2Vec ( متن , min_count = 1 )
ملتے جلتے_ایمبیڈنگ = ماڈل wv . سب سے زیادہ_مماثل ( 'خرگوش' )
پرنٹ کریں ( ملتے جلتے_ایمبیڈنگ )

اس مثال میں، ہم سیاق و سباق کے لحاظ سے ان کی مماثلت کو جانچنے کے لیے 'word2vec' ماڈل کا استعمال کرتے ہوئے متن کے لیے لفظ ایمبیڈنگ بناتے ہیں اور اسے پہلے سے منسلک ٹکڑوں میں دیکھا جا سکتا ہے جو اس کوڈ کا آؤٹ پٹ ہے جو اسی طرح کے سرایتوں کی جانچ کرتا ہے۔ لفظ 'استعمال' کا۔

مثال 2: BERT ماڈل کے ذریعے قریب ترین تلاش کو سرایت کرنا

پہلے سے تربیت یافتہ قدرتی لینگویج پروسیسنگ ماڈل موجود ہیں جن کا استعمال نصوص کے درمیان مماثلت کا حساب لگانے کے لیے کیا جا سکتا ہے کیونکہ وہ الفاظ کے درمیان متعلقہ تعلق کو سمجھ اور سیکھ سکتے ہیں۔ BERT 'sentence_transformers' سے پہلے سے تربیت یافتہ زبان کے ماڈلز میں سے ایک ہے اور یہ متن کے درمیان مماثلت سیکھ سکتا ہے۔ نصوص کے درمیان مماثلت تلاش کرنے کے لیے، ہمیں پہلے اس ماڈل کو متن یا جملوں سے ٹھیک کرنا ہوگا۔

ایک بار یہ ہو جانے کے بعد، ہم ایمبیڈنگ سیکھنے کے لیے اس ماڈل کا استعمال کر سکتے ہیں۔ پھر، ہم 'کوزائن مماثلت' فنکشن کا استعمال کرتے ہوئے متن کے درمیان مماثلت کا حساب لگا سکتے ہیں۔ ہم اس مثال کو آن لائن Python پلیٹ فارم پر نافذ کرتے ہیں جو کہ 'google colab' ہے۔ ماڈل کو ٹھیک کرنے کے لیے، ہم (BERT) ماڈل لوڈ کرتے ہیں۔ اس مقصد کے لیے، ہم پہلے 'SentenceTransformers' کو انسٹال اور درآمد کرتے ہیں۔ پھر، ہم SentenceTransformer کا استعمال کرتے ہوئے ماڈل کو اس کے پہلے سے تربیت یافتہ ماڈل سے لوڈ کرتے ہیں۔ ماڈل لوڈ کرنے کے لیے، ہم SentenceTransformer اور BERT ماڈل کو مجموعی طور پر '$SentenceTransformer('bert-base-nli-mean-tokens')' کہتے ہیں جہاں ہم ان پٹ پیرامیٹر میں BERT کے پہلے سے تربیت یافتہ ماڈل کا نام بتاتے ہیں اور پھر ہم اسے 'BERTmodel' متغیر میں محفوظ کرتے ہیں۔

اس ماڈل کو لوڈ کرنے کے بعد، اب ہم چار عبارتیں بیان کرتے ہیں، جن میں سے ہر ایک ایک جملہ پر مشتمل ہوتا ہے تاکہ ان کے درمیان مماثلت کی جانچ کی جا سکے۔ ایک بار جب ہم مثال کے طور پر متن کی وضاحت کرتے ہیں، اب ہم اس متن کے لیے سرایت کرتے ہیں۔ ہم انفرادی طور پر 'انکوڈ' فنکشن کا استعمال کر کے ہر متن کے لیے سرایت کرتے ہیں۔

ہم انکوڈنگ فنکشن کو BERT ماڈل کے سابقہ ​​کے ساتھ 'BERTmodel.encoding ()' کہتے ہیں۔ پھر ہم 'ٹیکسٹ' اور 'زیادہ سے زیادہ لمبائی' کو پاس کرتے ہیں جسے ہم نے اس فنکشن کے پیرامیٹرز میں '512' کے برابر مقرر کیا ہے۔ ہم ہر متن پر اس انکوڈنگ فنکشن کو کہتے ہیں، اور یہ متن کو ایمبیڈنگ میں تبدیل کرتا ہے۔

اب، ہم ان ایمبیڈنگز میں سے ہر ایک کو استعمال کرتے ہیں اور ان کو کوزائن مماثلت کے فنکشن میں بدل دیتے ہیں تاکہ ان ایمبیڈنگز کے درمیان مماثلت تلاش کی جا سکے۔ کوزائن مماثلت کا فنکشن متنوں/دستاویزات کی درجہ بندی اور کلسٹرنگ کے لیے تمام قدرتی زبان کی پروسیسنگ کے کاموں میں وسیع پیمانے پر استعمال ہوتا ہے۔

ان ایمبیڈنگز کے درمیان مماثلت تلاش کرنے کے لیے، ہم کوزائن مماثلت کا فنکشن استعمال کرتے ہیں اور ایمبیڈڈ جملے کی قدر کو انڈیکس '0' کے ساتھ اور دوسرے ایمبیڈڈ جملے کو '1 سے 3' انڈیکس کے ساتھ بدلتے ہیں تاکہ سزا 0 کی دیگر 3 کے ساتھ مماثلت کو چیک کیا جا سکے۔ جملے کوزائن مماثلت کے فنکشن کی آؤٹ پٹ ویلیوز -1 سے 1 تک ہوتی ہیں۔ یہاں، 1 بتاتا ہے کہ دونوں ایمبیڈنگ ایک جیسے ہیں اور -1 کہتا ہے کہ دونوں ایمبیڈنگز ایک جیسے نہیں ہیں۔ ہم نے کوڈ کا ٹکڑا منسلک کیا جو کوزائن مماثلت کے فنکشن کو لاگو کرنے کا طریقہ دکھاتا ہے چار جملے ایمبیڈنگز جو ہم نے پہلے سے تربیت یافتہ BERT ماڈل کا استعمال کرتے ہوئے مثالوں میں بنائے ہیں۔

!pip سزا_ٹرانسفارمرز انسٹال کریں۔
جملے = [
'چار سال پہلے، بوتل بھی بھری ہوئی تھی۔'،
'کتے نے پنجرے سے فرار ہونے کا خواب دیکھا اور گلی میں جہاں اس نے اپنے دوست کو جاتے دیکھا۔'
'وہ شخص کئی مہینوں سے جیلی فش کے ساتھ کھیل رہا تھا۔'
'اسے اپنی الماری میں ایک گھونگا ملا۔']
سزا_ٹرانسفارمرز سے سزا ٹرانسفارمر درآمد کریں۔
برٹ ماڈل = سزا کا ٹرانسفارمر ('برٹ-بیس-این-لی-مین-ٹوکن')
sentence_embeddings = Bertmodel.encode(جملے)
جملہ_ایمبیڈنگز.شکل
sklearn.metrics.pairwise سے cosine_similarity درآمد کریں۔
# calculate=ing جملہ 0 کے لیے cosine مماثلت:
cosine_similarity(
[جملہ_ایمبیڈنگز[0]]،
جملہ_ایمبیڈنگز[1:])

آؤٹ پٹ میں موجود صف دیگر تین جملوں کے ساتھ 'جملے 0' کی مماثلت کی قدر دکھاتی ہے، جیسے 1، 2، اور 3۔

نتیجہ

ہم نے سرایت کے درمیان مماثلت تلاش کرنے کے طریقوں پر تبادلہ خیال کیا۔ ہم نے 'word2vec' جینسم ماڈل اور پہلے سے تربیت یافتہ BERT ماڈل کا استعمال کرتے ہوئے ایمبیڈنگ کے قریب ترین میچ کو تلاش کرنے کے لیے دو مختلف مثالیں دکھائیں۔