বড় আকারের পাঠ্যের শ্রেণিবদ্ধকরণ


18

আমি আমার পাঠ্য ডেটাতে শ্রেণিবদ্ধকরণ করতে চাই। আমার কাছে 300 classesপ্রতি ক্লাসে 200 টি প্রশিক্ষণ দলিল রয়েছে (তাই 60000 documents in total) এবং এর ফলে খুব উচ্চ মাত্রিক ডেটা হতে পারে (আমরা সম্ভবত 1 মিলিয়ন মাত্রার চেয়ে বেশি খুঁজছি )।

আমি পাইপলাইনে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করতে চাই (কেবলমাত্র আমার প্রয়োজনীয়তাগুলি কী তা আপনাকে বোঝাতে):

  1. প্রতিটি নথি বৈশিষ্ট্য ভেক্টরে রূপান্তর করা ( tf-idfবা vector space model)
  2. Feature selection( Mutual Informationঅগ্রাধিকার ভিত্তিতে বা অন্য কোনও মানক ভিত্তিতে)
  3. ক্লাসিফায়ার প্রশিক্ষণ ( SVM, Naive Bayes, Logistic Regressionবা Random Forest)
  4. প্রশিক্ষিত শ্রেণিবদ্ধ মডেলের উপর ভিত্তি করে অদেখা তথ্যের পূর্বাভাস।

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

যদি আমাকে এর সমান্তরাল করতে হয় তবে আমি কি আপাচি মাহাউটের দিকে তাকিয়ে থাকব ? দেখে মনে হচ্ছে এটি এখনও আমার প্রয়োজনীয় কার্যকারিতা সরবরাহ করতে পারে না।

সকলকে আগাম ধন্যবাদ।


আপডেট: আমি এই ওয়েবসাইটটি , আর মেলিংয়ের তালিকা এবং সাধারণভাবে ইন্টারনেট ঘুরে দেখেছি । আমার কাছে মনে হচ্ছে নিম্নলিখিত পরিস্থিতিতে আমার পরিস্থিতিতে উত্থাপিত হতে পারে:

(1) আর ( বিশেষত টিএম প্যাকেজ) ব্যবহার করে আমার ডেটা প্রেরোসেসিং অযৌক্তিক হতে পারে , যেহেতু নিষিদ্ধভাবেtm ধীর হবে।

(২) যেহেতু আমার আর প্যাকেজগুলির একটি সংকলন (প্রাক প্রসেসিং, স্পার্স ম্যাট্রিক্স, শ্রেণিবদ্ধ ইত্যাদি) ব্যবহার করা দরকার প্যাকেজগুলির মধ্যে আন্তঃব্যবযোগিতা একটি সমস্যা হয়ে উঠতে পারে এবং ডেটা এক ফর্ম্যাট থেকে অন্য রূপান্তর করার ক্ষেত্রে আমি অতিরিক্ত ওভারহেড নিতে পারি may । উদাহরণস্বরূপ, আমি যদি আমার প্রাক-প্রক্রিয়াকরণটি tm(বা ডাব্লুইএইচএর মতো বাহ্যিক সরঞ্জাম) ব্যবহার করে করি তবে আমার এই ডেটাটিকে এমন ফর্মের মধ্যে রূপান্তর করার একটি উপায় বের করতে হবে যা আর এইচপিসি লাইব্রেরি পড়তে পারে। এবং আবার এটি আমার কাছে পরিষ্কার নয় যে শ্রেণিবদ্ধ প্যাকেজগুলি এইচপিসি লাইব্রেরি দ্বারা সরবরাহিত ডেটা সরাসরি গ্রহণ করবে কিনা।

আমি কি সঠিক পথে রয়েছি? এবং আরও গুরুত্বপূর্ণ, আমি কি বোধগম্য করছি?


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

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

1
আপনি foreachআর এ লাইব্রেরি সমান্তরাল কোড লেখার জন্য ব্যবহার করতে পারেন This এটি এলোমেলো বনগুলির সাথে মিলিতভাবে বিশেষত ভাল কাজ করে যা অন্তর্নিহিত সমান্তরালভাবে সহজ।
Zach

2
কয়েকটি প্রশ্ন: ১) আপনি যে বিভিন্ন ধরণের শিখার পদ্ধতির উল্লেখ করেছেন তার সাথে তুলনা করতে আগ্রহী, বা কোনও কাজ করার জন্য আপনার কেবল একটি প্রয়োজন? 2) প্রতিটি নথিটি কি 1, 1 বা তার বেশি, বা 0 বা আরও বেশি ক্লাসের অন্তর্ভুক্ত? 3) আপনি কি বিশেষভাবে কোনও কারণে বৈশিষ্ট্য নির্বাচন ব্যবহার করতে চান , বা আপনি কেবল এটি প্রয়োজনীয় বলে মনে করেছেন? আমি অন্যান্য মন্তব্যে একমত যে এটি আজকের মানদণ্ড অনুসারে একটি পরিমিত আকারের সমস্যা, এবং মাত্রিকতা হ্রাস প্রয়োজনীয় নয়।
ডেভিডডলিউইস

1
আমি প্রায় 10,000 টি বিষয়ের (যেমন শ্রেণি বা বিভাগ বা আপনি যে কোনও শব্দ পছন্দ করেন) জড়িত পাঠ্য শ্রেণিবিন্যাসে কাজ করছি। আমি বর্তমানে এই স্কেলটিতে এই পাঠ্য শ্রেণিবিন্যাস সিস্টেম টিউন করার কাজ করছি। আমি আমার নিজস্ব কৌশলগুলি মালিকানাধীন হওয়ায় তা ভাগ করতে পারছি না, তবে আমার একটি পরামর্শ রয়েছে: ধারণা করাতে খুব সাবধানতা অবলম্বন করুন যে ইতিমধ্যে এটি প্রমাণিত না হওয়া পর্যন্ত কিছু প্রস্তাবিত কৌশল স্কেল করে। আমার অভিজ্ঞতায় খুব কম লোকই করেন।

উত্তর:


13

যতক্ষণ scipy.sparse.csr_matrixনা পাইথন যেমন উদাহরণস্বরূপ ডেটা একটি বিচ্ছিন্ন ডাটা স্ট্রাকচার হিসাবে উপস্থাপন করা হয় ততক্ষণ এটিকে কাজ করা সম্ভব হবে । আমি পাঠ্য ডেটাতে কাজ করার জন্য একটি টিউটোরিয়াল লিখেছিলাম । হ্যাশিং ট্রিকটি কাজে লাগিয়ে মেমরির ব্যবহার আরও কমিয়ে আনা সম্ভব: এটির HashingVectorizerপরিবর্তে CountingVectorizerবা এর ব্যবহারের জন্য মানিয়ে নিন TfidfVectorizer। এটি ডকুমেন্টেশন বিভাগে টেক্সট নিষ্কাশন বৈশিষ্ট্যগুলিতে ব্যাখ্যা করা হয়েছে ।

র্যান্ডম অরণ্যগুলি সাধারণত লিনিয়ার মডেলগুলির তুলনায় অনেক বেশি ব্যয়বহুল (যেমন লিনিয়ার সাপোর্ট ভেক্টর মেশিন এবং লজিস্টিক রিগ্রেশন) এবং বহু-নামীয় বা বার্নোলি ভোল্ট বয়েস এবং বেশিরভাগ পাঠ্য শ্রেণিবিন্যাসের সমস্যার জন্য যা সহজ মডেলের তুলনায় ভবিষ্যদ্বাণীপূর্ণ নির্ভুলতা আনতে পারে না better

যদি সাইকিট-লার্ন আপনার সমস্যার সমাধান করতে সক্ষম না হয় তবে ভোপাল ওয়েব্বিট (এবং সম্ভবত স্কেলার্নের চেয়ে দ্রুত) এটি করতে পারবেন যদিও এটি আপনার কথা বলছেন এমন সমস্ত মডেল প্রয়োগ করে না।

সাইকিট-লার্ন লাইব্রেরির বর্তমান অবস্থা প্রতিফলিত করতে এবং ভাঙা লিঙ্কগুলি ঠিক করতে 2015 এপ্রিল সম্পাদিত।


আচ্ছা যে কোনও "অ-মানক" মাত্রা হ্রাস কৌশলটি ব্যবহার করার ক্ষেত্রে সমস্যাটি হ'ল আপনি যখন নিজের কাজ প্রকাশের চেষ্টা করবেন তখন আপনি সমস্যার মধ্যে পড়তে পারেন। কমপক্ষে পাঠ্যের শ্রেণিবদ্ধকরণ ক্ষেত্রে, আমি একটি সত্যের জন্য জানি যে পর্যালোচকরা সাধারণত ব্যবহৃত কৌশলগুলি দেখতে পছন্দ করেন (বিদ্যমান শ্রেণিবদ্ধকরণ প্রযুক্তির সাথে তুলনা করা আরও সহজ করে তোলে)।
ব্যবহারকারী721975

চিন্তিত হবেন না - @ ইউগ্রিসেল কোনও মানসম্মত কিছু উল্লেখ করেনি, অন্তত শিল্প পাঠের শ্রেণিবিন্যাসের সাথে সম্পর্কিত হিসাবে না, যদিও আমি এখনও তার টিউটোরিয়ালগুলি পড়িনি।
ইলেটরেটর

+1 আমি মনে করি পাইথন সম্ভবত যেতে একটি উপভোগযোগ্য উপায়। পাঠ্য খনির জন্য আর-তে বেশ কয়েকটি সাম্প্রতিক প্যাকেজ রয়েছে তবে স্ট্যাটিস্টিকাল দক্ষতা এবং আগ্রহের তুলনায় যদি কারও কাছে আরও বেশি গণনা করা যায় তবে পাইথন আমার প্রস্তাবনা।
ইলেটর

@ogrisel: আপনি এবং অন্যরা যে পরিমাণ অবদান রেখেছেন তার জন্য কুডোস। পাইথনে যারা কাজ করেন তাদের কাছে আমি এটির প্রস্তাব দিয়েছি - পুরো নকশাটি অনুকরণীয়।
ইলেটরেটর

যেমন "অ-স্ট্যান্ডার্ড" মাত্রা হ্রাস (এলোমেলো অনুমানগুলি ব্যবহার করে) এবং জন ল্যাংফোর্ডের হ্যাশিং ট্রিক এবং মেটাওপিটিমাইজ সম্পর্কিত এই আলোচনার বৈশিষ্ট্যটি হ্যাশিং পরীক্ষা করে
ogrisel

10

পাইথনের গেনসিম ম্যাজিক। এবং যেহেতু এটি পাইথনে রয়েছে, আপনি @ ওগ্রিসেলের পরামর্শের সাথে এটি ব্যবহার করতে পারেন।


1

আমার নিজের শিংকে টট করার জন্য নয়, তবে আমি র্যাপিডমিনারের সাহায্যে পাঠ্য বিশ্লেষণে একটি দুর্দান্ত জনপ্রিয় ভিডিও সিরিজ তৈরি করেছি। আপনি এখানে দেখতে পারেন:

http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-loading.html

আপনি সম্ভবত বৈশিষ্ট্য নির্বাচন করা এড়াতে পারবেন, কেবল এমন একটি শ্রেণিবদ্ধ ব্যবহার করুন যা মেমরিতে মিলিয়ন * মিলিয়ন ম্যাট্রিক্স তৈরি করে না :)

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

300 যদিও অনেক ক্লাস। আমি কেবল কয়েকটি দিয়ে শুরু করব এবং আপনার পথে কাজ করব।


দুর্দান্ত পয়েন্টার এবং পরামর্শ। ধন্যবাদ। "আপনি কেবল কয়েকটি দিয়ে শুরু করুন এবং আপনার পথে কাজ করুন" বলতে কী বোঝাতে চাইছেন দয়া করে আপনি কী তা ব্যাখ্যা করতে পারেন?
ব্যবহারকারী721975

ভাল, 300 ক্লাসের পরিবর্তে ("বেহালা, ভায়োলা, সেলো, ট্রাম্পেট ...") এর পরিবর্তে আপনি এগুলিকে "স্ট্রিং, ব্রাস" এর মতো একটি ছোট সংখ্যায় পুনরায় শ্রেণিবদ্ধ করতে পারেন।
নিল ম্যাকগুইগান

ঠিক আছে, আমি এখন এটি পেয়েছি।
ব্যবহারকারী721975

1

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

এসভিএম এবং লজিস্টিক রিগ্রেশন সম্ভবত পাঠ্য শ্রেণিবিন্যাসের জন্য সর্বাধিক জনপ্রিয় পদ্ধতি। উভয়ই সহজেই 1000000 মাত্রা পরিচালনা করতে পারে, যেহেতু আধুনিক প্রয়োগগুলি বিচ্ছুরিত ডেটা স্ট্রাকচার ব্যবহার করে এবং নিয়মিতকরণ সেটিংস অন্তর্ভুক্ত করে যা ওভারফিটিং এড়ায়।

বেশ কিছু ওপেন সোর্স মেশিন লার্নিং সংকলনের সহ Weka এবং KNIME , উভয় SVMs এবং লজিস্টিক রিগ্রেশন অন্তর্ভুক্ত। এসভিএমগুলির স্বতন্ত্র বাস্তবায়নে libSVM এবং SVMlight অন্তর্ভুক্ত থাকে । লজিস্টিক রিগ্রেশনের জন্য, আমি বিএক্সআরট্রাইন এবং বিএক্সআর ক্লাসিফাই প্লাগ করব যা আমি মাদিগান, জেনকিন এবং অন্যদের সাথে বিকাশ করেছি। বিএক্সআরসি ক্লাসাইফাই হাজারো লজিস্টিক রিগ্রেশন মডেলগুলির একটি ইন-মেমরি সূচক তৈরি করতে এবং সেগুলি একই সাথে প্রয়োগ করতে পারে।

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


+1 ভাল মন্তব্য। যদি আমি 300 হ্যাঁ / কোনও শ্রেণিবদ্ধকরণ না করি তবে আমি কীভাবে কোনও শ্রেণীর জন্য নেতিবাচক প্রশিক্ষণের ডেটা বেছে নেব? ইতিবাচক তথ্য স্পষ্টতই শ্রেণীর অন্তর্ভুক্ত নথিগুলি।
user721975

আরেকটি মন্তব্য। এসভিএম / লজিস্টিক রেগ নিশ্চিতভাবে এক মিলিয়ন মাত্রা পরিচালনা করতে পারে তবে এই শ্রেণিবদ্ধদের জন্য প্যারামিটার বাছাই করার জন্য আমি কীভাবে পরীক্ষা-নিরীক্ষা চালাতে পারি? উদাহরণস্বরূপ, একটি ছোট ডেটা সেটে আপনি প্যারামিটারগুলি সিদ্ধান্ত নেওয়ার জন্য 10গুণ ক্রস বৈধকরণ চালিয়ে যেতে পারেন, তবে অ্যালগরিদম যুক্তিসঙ্গত সময়ে চলমান শেষ করার জন্য এত বড় ডেটার জন্য কোনটি গ্রহণ করবে?
user721975

@ ব্যবহারকারী721975: একটি নির্দিষ্ট বৈষম্যের জন্য, ইতিবাচক দলিলগুলি হ'ল তার উপর লেবেল এক্স রয়েছে, এবং নেতিবাচক নথিগুলি সমস্ত নথিই রয়েছে।
ডেভিডডলিউইস

@ ব্যবহারকারী 7২১৯75৫: চলমান সময় সম্পর্কে সাধারণ পরামর্শ দেওয়া শক্ত, কারণ অ্যালগরিদম এবং বাস্তবায়নের মধ্যে বিশদগুলি এত বেশি পরিবর্তিত হয়। 10-গুণ ক্রস বৈধতা আপনার ডেটা সেটের জন্য অযৌক্তিক নাও হতে পারে: 60000 উদাহরণগুলি বিষয় নয়।
ডেভিডডলিউইস

1
ভারসাম্যহীন প্রশিক্ষণ সেটগুলি অগত্যা কোনও সমস্যা নয়। তবে আসলে আমি বুঝতে পারি যে আমি এমন কিছু সম্পর্কে বিভ্রান্ত রয়েছি: যেহেতু নথিগুলি 0, 1 বা বিভিন্ন শ্রেণীর অন্তর্ভুক্ত হতে পারে, তাই প্রতি ক্লাসে 200 প্রশিক্ষণের নথি থাকার অর্থ কী? আপনি 0 টি ক্লাস বা 2+ ক্লাস সহ নথিগুলি সরিয়ে দিতে কিছু করেছিলেন? সাধারণভাবে, আপনি কীভাবে এই সেটটি 60000 নথি তৈরি করেছেন?
ডেভিডডলিউস

1

Sklearn 0.13 যেহেতু প্রকৃতপক্ষে একটি বাস্তবায়ন HashingVectorizer

সম্পাদনা করুন: এখানে একটি হল এই ধরনের একটি অ্যাপ্লিকেশন পূর্ণাঙ্গ উদাহরণ sklearn ডক্স থেকে

মূলত, এই উদাহরণটি প্রমাণ করে যে আপনি এমন ডেটাতে পাঠ্যকে শ্রেণিবদ্ধ করতে পারেন যা কম্পিউটারের প্রধান মেমোরিতে (বরং ডিস্ক / নেটওয়ার্ক / ... এ ফিট করে না)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.