আমি কীভাবে সাধারণ থিম অনুসারে স্ট্রিংগুলি গ্রুপ করতে পারি?


10

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

রুনডাউন: প্রচুর পরিমাণে স্ট্রিং দেওয়া হয়েছে, কীভাবে আমি শব্দার্থতত্ত্ব থিম দ্বারা সেগুলি গোছানো করব?

নির্দিষ্ট অ্যাপ্লিকেশন: আমার কাছে 200 ডলার ট্র্যাভিয়া প্রশ্ন রয়েছে যা আমি সাধারণ গ্রুপিংগুলিতে (গাড়ি, কম্পিউটার, রাজনীতি, কানাডা, খাবার, বারাক ওবামা ইত্যাদি) শ্রেণিবদ্ধ করতে চাই।

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

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

আরও নোট: যদি আমার প্রশ্নোত্তর হিসাবে বর্তমান ফর্ম্যাটটি সহায়তা হিসাবে দেখা যায় (যদিও এটি জেএসএনের মতো দেখায় তবে এটি মূলত একটি কাঁচা পাঠ্য ফাইল):

// row 1: is metadata
// row 2: is a very specific kind of "category"
// row 3: is the question
// row 4: is the answer
{
  15343
  A MUSICAL PASTICHE
  Of classical music's "three B's", he was the one born in Hamburg in 1833
  Johannes Brahms
}

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

এবং আরও নোট: আমি জানি না আমার কতগুলি বিভাগের প্রয়োজন হবে (কমপক্ষে 10-20), কারণ আমি নিজেই সমস্ত প্রশ্নের মধ্যে পড়ে নি । আমি আংশিকভাবে শ্রেণিবদ্ধকরণের সময় সীমাবদ্ধ নম্বর নির্ধারিত হওয়ার প্রত্যাশা করছিলাম। যাইহোক, আমি সর্বদা ম্যানুয়ালি বেশ কয়েকটি বিভাগ তৈরি করতে পারি।


আপনি কিভাবে গাজর ব্যবহার করছিলেন? এটি সম্পর্কে আমার সংক্ষিপ্ত পড়া থেকে, দেখে মনে হচ্ছে এটি সহজেই 200 কে রেকর্ড পরিচালনা করে।

এটি ভেবেছিল তার চেয়ে অনেক বেশি সময় নিয়েছে এবং জেভিএমের প্রাথমিক স্মৃতি বরাদ্দকে 1024 মি এবং সর্বোচ্চ মেমরি 2048 মি বাড়িয়ে দিতে বাধ্য করেছে। আমি যতটা শব্দ করেছিলাম ততটা খারাপ ছিল না।

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

হ্যাঁ, আপনি বাল্ক প্রসেসিং করছেন; জেভিএম দেওয়া আসলেই কোনও সমস্যা নয়। এটা কিভাবে দীর্ঘ গ্রহণ করা হয়নি? আপনি কোথায় থেকে দস্তাবেজগুলি লোড করছিলেন? একটি কাস্টম উত্স?

আমি সম্ভবত 10 মিনিট সময় নিয়েছি, তবে আমি সম্মত, বাল্ক প্রসেসিংটি সময় সাপেক্ষ এবং স্মৃতি নিবিড় সংজ্ঞা দ্বারা হয়। যদিও এটি সম্পর্কে পুরো পুরো বিষয়টি শ্বাসকষ্টের বিষয় ছিল না, এটি আরও একটি পার্শ্ব নোট।

উত্তর:


4

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

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


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

আমি আর টপিক মডেল প্যাকেজটি বেশ খানিকটা ব্যবহার করেছি। আমি অবশ্যই এটি আপনার নিজের কোডটি ঘুরিয়ে দেওয়ার পরামর্শ দিয়েছি - cran.r-project.org/web/packages/topicmodels/vignettes/… এ একটি কাজের উদাহরণ সহ কিছু ডকুমেন্টেশন রয়েছে । প্রতিটি নথির নির্দিষ্ট বিন্যাসে আসলেই কিছু যায় আসে না, কারণ যাইহোক সবকিছু "শব্দের ব্যাগ" উপস্থাপনায় হ্রাস পাচ্ছে। কেবলমাত্র সম্পর্কিত সমস্ত পাঠ্যকে একটি স্ট্রিংয়ে ফেলে দিন।
মার্টিন ও'লারি

4

আপনি এখানে দুটি সমস্যার সমাধান করার চেষ্টা করছেন।

সমস্যা 1: যথাযথ বিভাগে প্রশ্নের স্ট্রিং শ্রেণীবদ্ধ করুন।

সমস্যা 2: যথাযথ বিভাগগুলি তৈরি করুন।

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

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

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

তারপরে, কিছু নতুন প্রশ্ন দেখা দেয়। প্রথম: আমার কত প্রশিক্ষণের ডেটা দরকার? "এটা নির্ভর করে". আপনার ডেটা বা বিভাগগুলি না দেখে আমি নিশ্চিত না যে আমি এমনকি একটি অনুমানও নিতে পারি; তবে আমি একটি "বলপার্কের প্রাক্কলন" নিতে পারি এবং প্রায় 500 টি প্রশ্ন বলতে পারি। দ্রষ্টব্য যে আমি প্রস্থের অর্ডার দ্বারা বন্ধ হতে পারি।

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

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

টি এল; ডিআর

সংক্ষেপে, আমি এটি কীভাবে করতাম তা এখানে।

0) Use a supervised learner.
1) Create a category set yourself. 
2) Label manually about 500 questions
3) Use 75% of those to train a classifier.
4) Check performance.
5) If good then cheers else goto 2.

একটি ছোট প্রশ্ন: আপনি প্রশিক্ষণের তথ্য এবং সেগুলিকে ম্যানুয়ালি ট্যাগ করার জন্য "প্রায় 500 টি প্রশ্ন" বলছেন, তবে "আমি একটি মাত্রার ক্রম দ্বারা বন্ধ হতে পারি", তাই যদি আমি তার পরিবর্তে 5 কে বা 50 কে প্রশ্ন ব্যবহার করি তবে আমি কি এখনও থাকতাম? ম্যানুয়ালি যে অনেক ট্যাগ?

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

মাত্রার এক ক্রম দ্বারা আমি বোঝাচ্ছি 50-500-5000। আমি মনে করি না আপনাকে 50k শ্রেণিবদ্ধ করতে হবে। এটি আপনার পুরো কর্পাসের 1/4! 500 টি প্রশ্ন যদি খুব কম হয় তবে শ্রেণিবদ্ধদের বুটস্ট্র্যাপ করা সম্ভব। এখানে ধারণাটি হ'ল আপনি একটি ছোট প্রাথমিক কর্পাসে ক্লাসিফায়ারকে প্রশিক্ষণ দিন (যেমন আপনার 500) এবং তারপরে বাকীটিকে ট্যাগ করুন। এখন, আপনি এমন কয়েকটি কেস ব্যবহার করতে পারেন যেখানে শ্রেণিবদ্ধকারী একটি নতুন, বৃহত্তর শ্রেণিবদ্ধের পুনরায় প্রশিক্ষণে খুব আত্মবিশ্বাসী ছিলেন।

আরেকটি গুরুত্বপূর্ণ বিষয় মনে রাখা; অনেক শ্রেণিবদ্ধের পারফরম্যান্স প্রশিক্ষণের ডেটা পরিমাণে রৈখিক নয়, তবে সাধারণত বাঁকির মতো সিগময়েড হবে। তার মানে আরও 500 টি ট্যাগ করা প্রশ্ন 5000 এর মতো প্রায় উপকারের মতো হতে পারে My আমার পরামর্শটি ছোট পদক্ষেপে কাজ করা।

কি বিবরণ আমার প্রকল্পে অতিরিক্ত অন্তর্দৃষ্টি প্রদান করবে? আমি আমার ফর্ম্যাটিংটি দেখানোর জন্য কয়েকটি উদাহরণ প্রশ্নগুলি ভাগ করতে পারি, তবে আমি শ্রেণিবদ্ধকরণের প্রক্রিয়া অনুসারে আমার প্রশ্নোত্তর বিন্যাসটি তৈরি করতে প্রস্তুত। আমি সাহায্যের প্রশংসা করি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.