- جنوری۳۱، ۲۰۱۹
- Vasilis Vryniotis
- . 16 تبصرے
پچھلے مضامین میں ہم نے کے نظریاتی پس منظر پر بات کی ہے۔ Naive Bayes ٹیکسٹ کلاسیفائر اور استعمال کی اہمیت فیچر سلیکشن تکنیک متن کی درجہ بندی میں۔ اس آرٹیکل میں، ہم سب کچھ ایک ساتھ ڈالنے جا رہے ہیں اور JAVA میں Naive Bayes ٹیکسٹ کلاسیفکیشن الگورتھم کا ایک سادہ نفاذ بنانے جا رہے ہیں۔ درجہ بندی کرنے والے کا کوڈ اوپن سورس (GPL v3 لائسنس کے تحت) ہے اور آپ اسے یہاں سے ڈاؤن لوڈ کر سکتے ہیں۔ Github کے.
اپ ڈیٹ: ڈیٹام باکس مشین لرننگ فریم ورک اب اوپن سورس اور مفت ہے۔ ڈاؤن لوڈ، اتارنا. جاوا میں Naive Bayes Classifier کے نفاذ کو دیکھنے کے لیے پیکیج com.datumbox.framework.machineleaning.classification کو دیکھیں۔
Naive Bayes جاوا پر عمل درآمد
کوڈ جاوا میں لکھا گیا ہے اور اسے براہ راست یہاں سے ڈاؤن لوڈ کیا جا سکتا ہے۔ Github کے. یہ GPLv3 کے تحت لائسنس یافتہ ہے لہذا بلا جھجھک اسے استعمال کریں، اس میں ترمیم کریں اور اسے آزادانہ طور پر دوبارہ تقسیم کریں۔
ٹیکسٹ کلاسیفائر لاگو کرتا ہے۔ کثیر النوع بولی Bayes کے ساتھ ساتھ ماڈل Chisquare فیچر سلیکشن الگورتھم دونوں تکنیکوں کے کام کرنے کے طریقے کی تمام نظریاتی تفصیلات پچھلے مضامین میں دی گئی ہیں اور تفصیلی javadoc تبصرے ماخذ کوڈ پر دیکھے جا سکتے ہیں جس پر عمل درآمد کو بیان کیا گیا ہے۔ اس طرح اس سیگمنٹ میں میں درجہ بندی کرنے والے کے فن تعمیر کی اعلیٰ سطحی وضاحت پر توجہ دوں گا۔
1. NaiveBayes کلاس
یہ ٹیکسٹ کلاسیفائر کا اہم حصہ ہے۔ یہ ٹرین () اور پیشین گوئی () جیسے طریقوں کو لاگو کرتا ہے جو درجہ بندی کرنے والے کو تربیت دینے اور اسے پیشین گوئیوں کے لیے استعمال کرنے کے ذمہ دار ہیں۔ واضح رہے کہ یہ کلاس تربیت/پیش گوئی سے پہلے دستاویز کو پری پروسیس اور ٹوکنائز کرنے کے لیے مناسب بیرونی طریقوں کو کال کرنے کے لیے بھی ذمہ دار ہے۔
2. NaiveBayesKnowledgeBase آبجیکٹ
تربیت کا آؤٹ پٹ ایک NaiveBayesKnowledgeBase آبجیکٹ ہے جو تمام ضروری معلومات اور امکانات کو ذخیرہ کرتا ہے جو Naive Bayes Classifier کے ذریعے استعمال ہوتے ہیں۔
3. دستاویز آبجیکٹ
عمل درآمد میں تربیت اور پیشین گوئی کے متن دونوں اندرونی طور پر دستاویز آبجیکٹ کے طور پر محفوظ ہیں۔ دستاویز آبجیکٹ دستاویز کے تمام ٹوکن (الفاظ)، ان کے اعداد و شمار اور دستاویز کی ہدف کی درجہ بندی کو محفوظ کرتا ہے۔
4. فیچر سٹیٹس آبجیکٹ
فیچر اسٹیٹس آبجیکٹ کئی اعدادوشمار کو اسٹور کرتا ہے جو فیچر نکالنے کے مرحلے کے دوران تیار ہوتے ہیں۔ اس طرح کے اعداد و شمار خصوصیات اور کلاس کی مشترکہ گنتی ہیں (جس سے مشترکہ امکانات اور امکانات کا اندازہ لگایا جاتا ہے)، کلاس شمار (جس سے پہلے کا اندازہ لگایا جاتا ہے اگر کوئی بھی ان پٹ کے طور پر نہیں دیا جاتا ہے) اور تربیت کے لیے استعمال ہونے والے مشاہدات کی کل تعداد۔
5. فیچر ایکسٹریکشن کلاس
یہ وہ کلاس ہے جو فیچر نکالنے کے لیے ذمہ دار ہے۔ واضح رہے کہ چونکہ یہ کلاس اندرونی طور پر کئی اعدادوشمار کا حساب لگاتی ہے جو درحقیقت بعد کے مرحلے میں درجہ بندی الگورتھم کے لیے درکار ہوتے ہیں، اس لیے ان تمام اعدادوشمار کو دوبارہ گنتی سے بچنے کے لیے فیچر اسٹیٹس آبجیکٹ میں کیش کر کے واپس کر دیا جاتا ہے۔
6. ٹیکسٹ ٹوکنائزر کلاس
یہ ایک ہے سادہ ٹیکسٹ ٹوکنائزیشن کلاس، اصل متن کو پہلے سے پروسیس کرنے، صاف کرنے اور ٹوکنائز کرنے اور انہیں دستاویزی اشیاء میں تبدیل کرنے کے لیے ذمہ دار ہے۔
NaiveBayes JAVA کلاس کا استعمال
NaiveBayesExample کلاس میں آپ NaiveBayes کلاس استعمال کرنے کی مثالیں تلاش کر سکتے ہیں۔ نمونہ کوڈ کا ہدف ایک ایسی مثال پیش کرنا ہے جو متن کی زبان کا پتہ لگانے کے لیے ایک سادہ Naive Bayes Classifier کو تربیت دیتا ہے۔ درجہ بندی کرنے والے کو تربیت دینے کے لیے، ابتدائی طور پر ہم ایک HashMap میں تربیتی ڈیٹاسیٹس کے راستے فراہم کرتے ہیں اور پھر ہم ان کے مواد کو لوڈ کرتے ہیں۔
//map of dataset files Map<String, URL> trainingFiles = new HashMap<>(); trainingFiles.put("English", NaiveBayesExample.class.getResource("/datasets/training.language.en.txt")); trainingFiles.put("French", NaiveBayesExample.class.getResource("/datasets/training.language.fr.txt")); trainingFiles.put("German", NaiveBayesExample.class.getResource("/datasets/training.language.de.txt")); //loading examples in memory Map<String, String[]> trainingExamples = new HashMap<>(); for(Map.Entry<String, URL> entry : trainingFiles.entrySet()) { trainingExamples.put(entry.getKey(), readLines(entry.getValue())); }
NaiveBayes درجہ بندی کرنے والے کو ڈیٹا بھیج کر تربیت دی جاتی ہے۔ تربیت مکمل ہونے کے بعد NaiveBayesKnowledgeBase آبجیکٹ بعد میں استعمال کے لیے محفوظ کر لیا جاتا ہے۔
//train classifier NaiveBayes nb = new NaiveBayes(); nb.setChisquareCriticalValue(6.63); //0.01 pvalue nb.train(trainingExamples); //get trained classifier NaiveBayesKnowledgeBase knowledgeBase = nb.getKnowledgeBase();
آخر میں کلاسیفائر کو استعمال کرنے اور نئی مثالوں کی کلاسز کی پیشین گوئی کرنے کے لیے آپ کو صرف NaiveBayesKnowledgeBase آبجیکٹ کو پاس کر کے ایک نیا درجہ بندی شروع کرنا ہے جسے آپ نے پہلے تربیت کے ذریعے حاصل کیا تھا۔ پھر صرف predict() طریقہ پر کال کرکے آپ کو دستاویز کی پیشین گوئی کی کلاس مل جاتی ہے۔
//Test classifier nb = new NaiveBayes(knowledgeBase); String exampleEn = "I am English"; String outputEn = nb.predict(exampleEn); System.out.format("The sentense "%s" was classified as "%s".%n", exampleEn, outputEn);
ضروری توسیعات
مخصوص JAVA کے نفاذ کو نفیس متن کی درجہ بندی کے مسائل کے لیے استعمال کے لیے مکمل طور پر تیار نہیں سمجھا جانا چاہیے۔ یہاں کچھ اہم توسیعات ہیں جو کی جا سکتی ہیں:
1. مطلوبہ الفاظ کا اخراج:
اگرچہ ایک کلیدی الفاظ کا استعمال سادہ مسائل جیسے کہ زبان کی کھوج کے لیے کافی ہو سکتا ہے، دیگر زیادہ پیچیدہ مسائل کے لیے n-grams نکالنے کی ضرورت ہوتی ہے۔ اس طرح کوئی بھی یا تو TextTokenizer.extractKeywords() طریقہ کو اپ ڈیٹ کرکے زیادہ نفیس ٹیکسٹ نکالنے والے الگورتھم کو نافذ کرسکتا ہے یا Datumbox کا استعمال کرسکتا ہے۔ کلیدی لفظ نکالنے کا API دستاویز کے تمام n-گرامس (کلیدی الفاظ کے مجموعے) حاصل کرنے کے لیے فنکشن۔
2. ٹیکسٹ پری پروسیسنگ:
کلاسیفائر استعمال کرنے سے پہلے عام طور پر غیر ضروری حروف/حصوں کو ہٹانے کے لیے دستاویز کو پہلے سے پروسیس کرنا ضروری ہوتا ہے۔ اگرچہ موجودہ نفاذ TextTokenizer.preprocess() طریقہ استعمال کرکے محدود پری پروسیسنگ انجام دیتا ہے، جب HTML صفحات کا تجزیہ کرنے کی بات آتی ہے تو چیزیں مشکل ہوجاتی ہیں۔ کوئی بھی HTML ٹیگز کو آسانی سے تراش سکتا ہے اور دستاویز کا صرف سادہ متن رکھ سکتا ہے یا مزید نفیس مشین لرننگ تکنیکوں کا سہارا لے سکتا ہے جو صفحہ کے مرکزی متن کا پتہ لگاتا ہے اور فوٹر، ہیڈر، مینو وغیرہ سے تعلق رکھنے والے مواد کو ہٹا سکتا ہے۔ Datumbox کا استعمال کر سکتے ہیں۔ ٹیکسٹ ایکسٹریکشن API تقریب.
3. اضافی نائیو بیز ماڈلز:
موجودہ درجہ بندی Multinomial Naive Bayes درجہ بندی کو نافذ کرتا ہے، اس کے باوجود جیسا کہ ہم نے پچھلے مضمون میں اس کے بارے میں بات کی تھی۔ احساس تجزیہمختلف درجہ بندی کے مسائل کے لیے مختلف ماڈلز کی ضرورت ہوتی ہے۔ کچھ میں الگورتھم کا بائنرائزڈ ورژن زیادہ مناسب ہوگا، جبکہ دوسروں میں برنولی ماڈل بہت بہتر نتائج فراہم کرے گا۔ اس نفاذ کو نقطہ آغاز کے طور پر استعمال کریں اور کی ہدایات پر عمل کریں۔ بولی Bayes ٹیوٹوریل ماڈل کو بڑھانے کے لیے۔
4. اضافی فیچر کے انتخاب کے طریقے:
درجہ بندی کے لیے موزوں ترین خصوصیات کو منتخب کرنے کے لیے یہ نفاذ Chisquare فیچر سلیکشن الگورتھم کا استعمال کرتا ہے۔ جیسا کہ ہم نے پچھلے مضمون میں دیکھا تھا، Chisquare خصوصیت کا انتخاب طریقہ ایک اچھی تکنیک ہے جو مناسب خصوصیات کو منتخب کرنے کے لیے اعداد و شمار پر ریلے کرتی ہے، اس کے باوجود یہ نادر خصوصیات پر زیادہ اسکور دیتی ہے جو صرف ایک زمرے میں ظاہر ہوتی ہیں۔ فیچر کے انتخاب پر آگے بڑھنے سے پہلے شور / نایاب خصوصیات کو ہٹا کر یا باہمی معلومات جیسے اضافی طریقوں کو لاگو کرکے بہتری لائی جا سکتی ہے جس پر ہم نے مذکورہ مضمون پر تبادلہ خیال کیا ہے۔
5. کارکردگی کی اصلاح:
خاص طور پر نفاذ میں کوڈ پر مائیکرو آپٹیمائزیشن کرنے کے بجائے کوڈ کی پڑھنے کی اہلیت کو بہتر بنانا ضروری تھا۔ اس حقیقت کے باوجود کہ اس طرح کی اصلاحیں کوڈ کو بدصورت اور پڑھنا/ برقرار رکھنا مشکل بناتی ہیں، وہ اکثر ضروری ہوتے ہیں کیونکہ اس الگورتھم میں بہت سے لوپس کو تربیت اور جانچ کے دوران لاکھوں بار عمل میں لایا جاتا ہے۔ یہ عمل آپ کے اپنے ٹیون شدہ ورژن کو تیار کرنے کے لیے ایک بہترین نقطہ آغاز ہو سکتا ہے۔
تقریباً وہاں… حتمی نوٹس!
یہ عمل درآمد کیسے کام کرتا ہے اس کے بارے میں اچھی طرح سے سمجھنے کے لیے آپ کو اس بارے میں پچھلے دو مضامین کو پڑھنے کا سختی سے مشورہ دیا جاتا ہے۔ بولی Bayes کلاسیفائر اور فیچر سلیکشن. آپ طریقوں کے نظریاتی پس منظر کے بارے میں بصیرت حاصل کریں گے اور یہ الگورتھم/کوڈ کے حصوں کو واضح کر دے گا۔
ہمیں نوٹ کرنا چاہیے کہ Naive Bayes ایک آسان، تیز اور اکثر اوقات "کافی درست" ہونے کے باوجود، یہ "Naive" بھی ہے کیونکہ یہ خصوصیات کی مشروط آزادی کا مفروضہ بناتا ہے۔ چونکہ یہ مفروضہ متن کی درجہ بندی کے مسائل میں تقریباً کبھی پورا نہیں ہوتا ہے، اس لیے Naive Bayes تقریباً کبھی بھی بہترین کارکردگی کا درجہ دینے والا نہیں ہے۔ میں ڈیٹام باکس API، معیاری Naive Bayes درجہ بندی کی کچھ توسیعیں صرف سادہ مسائل جیسے کہ زبان کی کھوج کے لیے استعمال ہوتی ہیں۔ مزید پیچیدہ متن کی درجہ بندی کے مسائل کے لیے مزید جدید تکنیکیں جیسے کہ میکس اینٹروپی درجہ بندی ضروری ہیں۔
اگر آپ کسی دلچسپ منصوبے میں عمل درآمد کا استعمال کرتے ہیں۔ ہمیں ایک سطر چھوڑ دو اور ہم آپ کے پروجیکٹ کو اپنے بلاگ پر پیش کریں گے۔ اس کے علاوہ اگر آپ کو مضمون پسند ہے تو براہ کرم ایک لمحہ نکالیں اور اسے ٹویٹر یا فیس بک پر شیئر کریں۔ 🙂
- AI
- ai آرٹ
- AI آرٹ جنریٹر
- عی روبوٹ
- مصنوعی ذہانت
- مصنوعی ذہانت کا سرٹیفیکیشن
- مصنوعی ذہانت والا روبوٹ
- مصنوعی ذہانت والے روبوٹ
- مصنوعی ذہانت سافٹ ویئر
- blockchain
- بلاکچین کانفرنس
- coingenius
- بات چیت مصنوعی ذہانت
- crypto کانفرنس ai
- dall-e
- ڈیٹا باکس
- گہری سیکھنے
- گوگل عی
- مشین لرننگ
- مشین لرننگ اور شماریات
- پلاٹا
- افلاطون اے
- افلاطون ڈیٹا انٹیلی جنس
- افلاطون گیم
- پلیٹو ڈیٹا
- پلیٹو گیمنگ
- پروگرامنگ
- پیمانہ ai
- نحو
- زیفیرنیٹ