কাঠামোগত কাঠামোগত শ্রেণিবদ্ধকরণ


12

আমি অপ্রচলিত টেক্সট ডকুমেন্টগুলি, অর্থাৎ অজানা কাঠামোর ওয়েব সাইটগুলিকে শ্রেণিবদ্ধ করতে যাচ্ছি। আমি যে শ্রেণিতে শ্রেণিবদ্ধ করছি তার সংখ্যা সীমিত (এই মুহুর্তে, আমি বিশ্বাস করি যে এখানে আরও তিনটির বেশি নেই)। আমি কীভাবে শুরু করতে পারি তার জন্য কারও কাছে কোনও পরামর্শ আছে?

"শব্দের ব্যাগ" এখানে কি সম্ভব? পরে, আমি নথির কাঠামোর (সম্ভবত সিদ্ধান্তের গাছের) উপর ভিত্তি করে অন্য শ্রেণিবদ্ধকরণের মঞ্চটি যুক্ত করতে পারি।

আমি মাহাউট এবং হাদোপের সাথে কিছুটা পরিচিত, তাই আমি জাভা ভিত্তিক সমাধানগুলি পছন্দ করি। প্রয়োজনে আমি স্কালা এবং / অথবা স্পার্ক ইঞ্জিনে (এমএল লাইব্রেরি) স্যুইচ করতে পারি।

উত্তর:


14

মাটি থেকে এটি কাজ করা যাক। শ্রেণিবদ্ধকরণ (শ্রেণীবদ্ধকরণ হিসাবেও পরিচিত) তত্ত্বাবধানে শেখার একটি উদাহরণ । তত্ত্বাবধানে শিক্ষায় আপনার রয়েছে:

  • মডেল - এমন কিছু যা আপনার ডেটাতে অভ্যন্তরীণ কাঠামোর সান্নিধ্য তৈরি করে, আপনাকে এটি সম্পর্কে বিতর্ক করতে এবং দরকারী ভবিষ্যদ্বাণী করতে সক্ষম করে (যেমন কোনও কোনও সামগ্রীর পূর্বাভাস বর্গ); সাধারণত মডেলটির এমন প্যারামিটার থাকে যা আপনি "শিখতে" চান
  • প্রশিক্ষণ এবং টেস্টিং ডেটাসেটগুলি - আপনি আপনার মডেলকে প্রশিক্ষণের জন্য যে পন্যগুলি ব্যবহার করেন সেগুলির সেট (প্যারামিটারগুলির জন্য ভাল মান খুঁজে পাওয়া) এবং আরও মূল্যায়ণ
  • প্রশিক্ষণ এবং শ্রেণিবদ্ধকরণ অ্যালগরিদম - প্রথমে বর্ণনা করে যে কীভাবে প্রশিক্ষণ ডেটাসেট থেকে মডেল শিখতে হবে, দ্বিতীয়টি কীভাবে প্রশিক্ষিত মডেল প্রদত্ত একটি নতুন অবজেক্টের শ্রেণি অর্জন করতে পারে তা দেখায়

এখন স্প্যাম শ্রেণিবিন্যাসের একটি সহজ কেস নেওয়া যাক। আপনার প্রশিক্ষণ ডেটাসেটটি ইমেলগুলির + সম্পর্কিত লেবেলগুলির একটি কর্পাস - "স্প্যাম" বা "স্প্যাম নয়"। টেস্টিং ডেটাসেটের একই কাঠামো রয়েছে তবে কিছু স্বতন্ত্র ইমেল থেকে তৈরি করা হয়েছে (সাধারণত কেউ তার ডেটাসেটকে বিভক্ত করে তোলে এবং বলবে, এর 9-10 ব্যবহার প্রশিক্ষণের জন্য এবং 1-10 - পরীক্ষার জন্য)। ইমেলগুলির মডেল করার একটি উপায় হ'ল প্রতিটি শব্দকে একটি সেট (ব্যাগ) হিসাবে উপস্থাপন করা। যদি আমরা ধরে নিই যে শব্দগুলি একে অপরের থেকে স্বতন্ত্র, আমরা নায়েভ বয়েস শ্রেণিবদ্ধকারীটি ব্যবহার করতে পারি, অর্থাত্ প্রতিটি শব্দ এবং প্রতিটি শ্রেণির জন্য পূর্ব সম্ভাবনাগুলি গণনা করতে পারি (প্রশিক্ষণের অ্যালগরিদম) এবং তারপরে কোনও নতুন নথির উত্তরীয় সম্ভাবনা খুঁজে পাওয়ার জন্য বয়েস উপপাদ্য প্রয়োগ করি নির্দিষ্ট ক্লাস

সুতরাং, মূলত আমাদের রয়েছে:

raw model + training set + training algorithm -> trained model
trained model + classification algorithm + new object -> object label

এখন নোট করুন যে আমরা আমাদের বস্তুগুলি (দস্তাবেজগুলি) শব্দের ব্যাগ হিসাবে উপস্থাপন করেছি। তবে কি একমাত্র উপায়? আসলে, আমরা কাঁচা পাঠ্য থেকে আরও অনেক কিছু বের করতে পারি। উদাহরণস্বরূপ, শব্দের পরিবর্তে আমরা তাদের ডালপালা বা লেমাস ব্যবহার করতে পারি , গোলমাল থামিয়ে দেওয়া শব্দগুলি ফেলে দিতে পারি , শব্দের POS ট্যাগ যুক্ত করতে পারি, নাম দেওয়া সত্তাগুলি বের করতে পারি বা ডকুমেন্টের HTML কাঠামোটিও অন্বেষণ করতে পারি। প্রকৃতপক্ষে, কোনও নথির আরও সাধারণ উপস্থাপনা (এবং সাধারণভাবে যে কোনও বস্তু) একটি বৈশিষ্ট্য ভেক্টর । যেমন পাঠ্যের জন্য:

actor, analogue, bad, burn, ..., NOUN, VERB, ADJ, ..., in_bold, ... | label
    0,        0,   1,    1, ...,    5,    7,   2, ...,       2, ... | not spam
    0,        1,   0,    0, ...,    3,   12,  10, ...,       0, ... | spam

এখানে প্রথম সারিটি সম্ভাব্য বৈশিষ্ট্যগুলির একটি তালিকা এবং পরবর্তী সারিগুলি ডকুমেন্টে এই বৈশিষ্ট্যটি কতবার ঘটে তা দেখায়। উদাহরণস্বরূপ, প্রথম নথিতে "অভিনেতা" শব্দের কোনও উপস্থিতি নেই, "বার্ন" শব্দের 1 উপস্থিতি, 5 বিশেষ্য, 2 টি বিশেষণ এবং 2 টি টুকরো টুকরো টুকরো শব্দ রয়েছে। সর্বশেষ কলামটি ফলস্বরূপ শ্রেণীর লেবেলের সাথে সম্পর্কিত।

বৈশিষ্ট্য ভেক্টর ব্যবহার করে আপনি আপনার পাঠ্যের কোনও বৈশিষ্ট্য সংযুক্ত করতে পারেন। যদিও বৈশিষ্ট্যগুলির ভাল সেটটি পেতে কিছুটা সময় লাগতে পারে।

এবং মডেল এবং অ্যালগোরিদম সম্পর্কে কি? আমরা কি নাইভ বেয়েসের কাছে আবদ্ধ? একেবারেই না. লজিস্টিক রিগ্রেশন , এসভিএম , সিদ্ধান্ত গাছ - কেবলমাত্র কয়েকটি জনপ্রিয় শ্রেণিবদ্ধ উল্লেখ করতে। (দ্রষ্টব্য, যে আমরা বেশিরভাগ ক্ষেত্রে "শ্রেণিবদ্ধ" বলি যার অর্থ আমরা মডেল + প্রশিক্ষণ এবং শ্রেণিবিন্যাসের জন্য সম্পর্কিত অ্যালগরিদমকে বোঝাই)।

বাস্তবায়নের ক্ষেত্রে, আপনি টাস্কটিকে 2 ভাগে ভাগ করতে পারেন:

  1. বৈশিষ্ট্য নিষ্কাশন - কাঁচা পাঠ্যগুলিকে বৈশিষ্ট্য ভেক্টরগুলিতে রূপান্তর করা।
  2. বস্তুর শ্রেণিবদ্ধকরণ - বিল্ডিং এবং মডেল প্রয়োগ করা।

প্রথম পয়েন্টটি অনেক এনএলপি লাইব্রেরিতে ভালভাবে কাজ করা হয় । দ্বিতীয়টি মেশিন লার্নিং সম্পর্কে, সুতরাং আপনার ডেটাসেটের উপর নির্ভর করে আপনি ওয়েকা বা এমএলিব উভয়ই ব্যবহার করতে পারেন ।


অরিজিনাল পোস্টারটি "শ্রেণিবদ্ধ" শব্দটি ব্যবহার করেছেন তবে "ক্লাস্টার" তার সমস্যার আরও সঠিক বিবরণ কারণ তাঁর বিভাগগুলির কোনও পূর্বনির্ধারিত সংজ্ঞা নেই। অতএব, এটি অগত্যা কোনও তত্ত্বাবধানে শেখার সমস্যা নয়।
মিঃ মেরিটোলজি

@ মিঃ মেরিট্রোলজি: হুম, প্রসঙ্গে আমি বলব যে লেখক যে কংক্রিটের ক্লাস ব্যবহার করছেন তা সম্পর্কে নিশ্চিত নন, তবে তিনি ক্লাস্টারিং নয়, শ্রেণিবিন্যাস চান। যাইহোক, তিনিই একমাত্র ব্যক্তি যিনি সত্য জানেন :)
বন্ধুবান্ধব

আমি সম্ভবত এই সময়ে পরিষ্কার ছিল না। বিভাগগুলি পরামর্শে নির্বাচিত হতে চলেছে, তাই এটি ক্লাস্টারিং সমস্যার চেয়ে বরং শ্রেণিবদ্ধকরণ। একটি জটিল বৈশিষ্ট্য ভেক্টর তৈরির ধারণাটি যথেষ্ট যুক্তিসঙ্গত বলে মনে হয় - বিশেষত, কিছু নির্দিষ্ট ট্যাগ রয়েছে যা সম্ভবত কিছু নমুনার দ্রুত শ্রেণিবদ্ধকরণ সম্ভবত। আমি নিশ্চিত নই যে এসভিএম সমস্যাটি খাপ খায় কিনা, আমি উচ্চ অরেণ্যতার পূর্বাভাস হিসাবে দেখি তবে সিদ্ধান্তের গাছ এবং বেয়েস প্রযোজ্য বলে মনে হয়। আমি একটি হাইব্রিড অ্যালগরিদম (এসভিএম ভিত্তিক সিদ্ধান্ত গাছ) প্রয়োগ সম্পর্কে চিন্তা করতে শুরু করছি starting
গ্রজেগোর্জ ই।

@GrzegorzE। - যদি আপনার বিভাগগুলি আগে থেকেই সংজ্ঞায়িত করা হয় তবে দয়া করে আপনার প্রশ্নে এই তিনটি বিভাগের তালিকা করুন। আমার মতে, আপনি এমএল অ্যালগরিদমগুলিতে খুব বেশি মনোনিবেশিত এবং আপনার সমস্যার প্রকৃতি এবং আপনার ডেটার প্রকৃতি সম্পর্কে যথেষ্ট নয়। উদাহরণস্বরূপ, আপনি অজানা কাঠামোর ওয়েবসাইটগুলির বৈশিষ্ট্যগুলিতে "ননলাইনারি" পূর্বাভাস দিন। কেন? এছাড়াও, আপনি ওয়েব-পৃষ্ঠার পাঠ্যের সাথে ট্যাগগুলি মেশাচ্ছেন-কে-কী-কী জানেন, এবং তাদের বিভিন্ন অর্থগত তাত্পর্য রয়েছে।
মিঃ মেরিটোলজি

@GrzegorzE। - আমি দৃ strongly়তার সাথে পরামর্শ দিচ্ছি যে আপনার শ্রেণিবদ্ধকরণ পদ্ধতিটি প্রাথমিকভাবে আপনার অগ্রাধিকার বিভাগ এবং ডেটার প্রকৃতি দ্বারা চালিত হওয়া উচিত। স্বেচ্ছাসেবী ওয়েবসাইটগুলিকে 3 টি বিভাগে শ্রেণিবদ্ধ করার জন্য রয়েছে অসংখ্য অফুরন্ত উপায়। শ্রেণিবদ্ধকরণের প্রতিটি উপায়ে ডেটা বা মুখ্য নিদর্শনগুলিতে মুখ্য বৈশিষ্ট্যগুলির পরামর্শ দেওয়া হবে। স্বতন্ত্র ডেটা উপাদানগুলির (ওয়েব পৃষ্ঠাগুলি) এবং তাদের প্রসঙ্গে ম্যানুয়াল বিশ্লেষণের বিকল্প নেই।
মিঃ মেরিটোলজি

5

টপিক মডেলিং আপনার সমস্যার জন্য খুব উপযুক্ত পদ্ধতি হবে। টপিক মডেলগুলি নিরীক্ষণযোগ্য শেখার / আবিষ্কারের একটি রূপ, যেখানে নির্দিষ্ট (বা আবিষ্কৃত) কয়েকটি বিষয়ের শব্দের তালিকা দ্বারা সংজ্ঞায়িত করা হয় যাগুলির একসাথে উপস্থিত হওয়ার উচ্চ সম্ভাবনা রয়েছে। একটি পৃথক পদক্ষেপে, আপনি বিষয় বিশেষজ্ঞের সাহায্যে প্রতিটি বিষয় লেবেল করতে পারেন, তবে আপনার উদ্দেশ্যগুলির জন্য এটি প্রয়োজনীয় নয় কারণ আপনি কেবল তিনটি ক্লাস্টারে যেতে আগ্রহী।

আপনি প্রতিটি নথিকে শব্দের ব্যাগ হিসাবে বিবেচনা করেন এবং স্টপ শব্দগুলি ইত্যাদি অপসারণের প্রাক প্রক্রিয়া সহজ পদ্ধতির সাহায্যে আপনি বিষয়গুলির সংখ্যা প্রাক-নির্দিষ্ট করে থাকেন। আপনার ক্ষেত্রে, আপনি হয় "3" নির্দিষ্ট করতে পারেন, যা বিভাগগুলিতে আপনার নির্দিষ্ট সীমা, বা একটি বৃহত সংখ্যক বিষয় (10 এবং 100 এর মধ্যে) বাছাই করতে পারেন, এবং তারপরে একটি পৃথক পদক্ষেপে ডকুমেন্টগুলির জন্য সাধারণ জোর দিয়ে তিনটি ক্লাস্টার গঠন করতে পারেন বিষয়। কে-মানে বা অন্যান্য ক্লাস্টারিং পদ্ধতি ব্যবহার করা যেতে পারে। (আমি উত্তরোত্তর পদ্ধতির সুপারিশ করব)

আপনাকে স্ক্র্যাচ থেকে টপিক মডেলিং সফ্টওয়্যার কোড করার দরকার নেই। সফ্টওয়্যার লাইব্রেরি / প্যাকেজ সহ অনেক সংস্থান সহ একটি ওয়েব পৃষ্ঠা এখানে ।

কোনওটি জাভাতে নেই, তবে জাভার অধীনে সি ++ এবং পাইথন চালানোর উপায় রয়েছে।


4

এখানে পাঠ্যের শ্রেণিবিন্যাসের জন্য কয়েকটি দুর্দান্ত ওপেন সোর্স সফ্টওয়্যার প্যাকেজ রয়েছে যা আপনাকে শুরু করতে সহায়তা করবে:

  • MALLET হ'ল পাঠ্য ডেটা নিয়ে কাজ করার জন্য ইউএমাস দ্বারা নির্মিত একটি সিপিএল-লাইসেন্সযুক্ত জাভা-ভিত্তিক মেশিন লার্নিং টুলকিট। এটিতে বেশ কয়েকটি শ্রেণিবদ্ধকরণ অ্যালগরিদমের বাস্তবায়ন রয়েছে (উদাঃ, ন্যাভ বেইস, সর্বাধিক এনট্রপি, সিদ্ধান্তের গাছ)।
  • স্ট্যানফোর্ড ক্লাসিফায়ার স্ট্যানফোর্ড NLP গ্রুপ থেকে একটি জিপিএল লাইসেন্সের সর্বোচ্চ এনট্রপি টেক্সট তথ্য দিয়ে কাজ করার জন্য ডিজাইন করা ক্লাসিফায়ার জাভা বাস্তবায়ন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.