লেটেন্ট ডিরিচলেট বরাদ্দ থেকে প্রাপ্ত বিষয়গুলি ব্যবহার করে দস্তাবেজগুলির ক্লাস্টারিং


9

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

0.041 * মন্ত্রী + 0.041 * কী + 0.041 * মুহূর্ত + 0.041 * বিতর্কিত + 0.041 * প্রধান

একটি ক্লাস্টারিং অ্যালগরিদম প্রয়োগ করার জন্য, এবং আমি ভুল হলে আমাকে সংশোধন করতে, আমি বিশ্বাস করি যে tfidf বা word2vec ব্যবহার করে প্রতিটি শব্দকে একটি সংখ্যা হিসাবে উপস্থাপন করার উপায় খুঁজে পাওয়া উচিত।

কীভাবে আমি কোনও তালিকা থেকে পাঠ্য তথ্যকে "স্ট্রিপ" করতে পারলাম তার জন্য কোনও ধারণা আছে যাতে করে এটি করতে এবং তারপরে যথাযথ গুণণের জন্য এটি আবার রেখে দিতে পারি?

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

0.041 * 0.42 + ... + 0.041 * tfidf (প্রধানমন্ত্রী) এবং ফলাফল ক্লাস্টার করার জন্য পরে ব্যবহার করা হবে এমন একটি ফলাফল পান।

সময় দেয়ার জন্য ধন্যবাদ.


1
টিউটোরিয়ালে বর্ণিত হিসাবে, আপনি ভেক্টর হিসাবে নথি প্রকাশ করতে পারেন। এই ভেক্টরগুলিকে ক্লাস্টার করুন।
এমরে

আমি সাথী জানি কিন্তু আমি আমার সংগ্রহে এলডিএ প্রয়োগ করার পরে তৈরি বিষয়গুলি অনুসারে তাদের ক্লাস্টার করতে হবে। প্রতিটি বিষয়কে প্রতিটি বিষয়ের সাথে প্রতিটি নথির তুলনা করতে এবং প্রতিটি নথির জন্য সংশ্লিষ্ট বিষয় বা বিষয়গুলি সন্ধান করতে ভেক্টর হিসাবে প্রতিনিধিত্ব করা উচিত।
সোয়ান 87

আপনাকে প্রতিটি শব্দ ভেক্টর হিসাবে উপস্থাপন করতে হবে না। আপনি কর্পাসে শিখেছি এলডিএ রূপান্তর প্রয়োগ করে আপনি পুরো দস্তাবেজের জন্য নতুন প্রতিনিধিত্ব পান । এলএসআই-এর সাথে উদাহরণের জন্য, এই লিঙ্কটি দেখুন: radimrehurek.com/gensim/tut2.html মূল অংশটি হল তারা এলএসআই [ডকো_বো] দিয়ে পুরো কর্পাসে জ্ঞাত এলএসআই রূপান্তর প্রয়োগ করে
উইল স্ট্যান্টন

উত্তর:


4

ধরে নিই যে এলডিএ বিষয়গুলির একটি তালিকা তৈরি করেছে এবং প্রতিটি নথির জন্য প্রতিটি বিষয়ের বিপরীতে একটি স্কোর রেখেছিল, আপনি নথির প্রতিনিধিত্ব করতে পারেন এবং এটির ভেক্টর হিসাবে স্কোরগুলি:

Document | Prime | Minister | Controversial | TopicN | ...
   1       0.041    0.042      0.041          ...
   2       0.052    0.011      0.042          ...

প্রতিটি নথির জন্য স্কোর পেতে, আপনি দস্তাবেজটি চালাতে পারেন। কথিত ব্যাগ হিসাবে প্রশিক্ষিত এলডিএ মডেলের মাধ্যমে। জিন্সিম ডকুমেন্টেশন থেকে:

>>> lda = LdaModel(corpus, num_topics=100)  # train model
>>> print(lda[doc_bow]) # get topic probability distribution for a document

তারপরে, আপনি এই ম্যাট্রিক্সে কে-ইন্সেস চালাতে পারতেন এবং এটি একই সাথে অনুরূপ ডকুমেন্টগুলিকে গ্রুপ করা উচিত। ডি-ডিফল্টরূপে কে-মানে হ'ল একটি হার্ড ক্লাস্টারিং অ্যালগরিদম এটি বোঝায় যে এটি প্রতিটি নথিকে একটি ক্লাস্টারে বিভক্ত করে। আপনি নরম ক্লাস্টারিং মেকানিজম ব্যবহার করতে পারেন যা আপনাকে একটি সম্ভাব্যতা স্কোর দেয় যা একটি নথি একটি ক্লাস্টারের মধ্যে ফিট করে - এটি ফাজী কে-মানে বলেhttps://gist.github.com/mblondel/1451300 হল পাইথন গিস্ট, যা দেখায় আপনি কীভাবে স্কাইকিট শিখতে সাহায্য করতে পারেন।

PS: আমি 2 টিরও বেশি লিঙ্ক পোস্ট করতে পারি না


"এন" নথির কোনও নম্বরের জন্য আমি এটি করার চেষ্টা করেছি যেখানে বিষয়গুলি টি are তবে x নথির নম্বরের জন্য, সমস্ত টি বিষয়গুলির প্রোবটি কেবল কিছু (টি-না) বিষয়গুলি প্রদর্শিত হবে না যেখানে 1 <= না <t। আমি যখন ছোট দস্তাবেজের আকারে পরীক্ষা চালাই তখন এটি হয় না। এটি কি কারণ এটি প্রিন্ট হয় না যদি 0 হয়?
মনীষ রঞ্জন

0

পূর্ববর্তী উত্তরের পরিপূরক হিসাবে আপনি কেবল এলডিএ টপিক-ডক বিতরণ থেকে প্রাপ্ত কম্পোজিশনাল ডেটাতে সরাসরি কম্মান না চালিয়ে চলুন, এর পরিবর্তে কিছু রচনামূলক ডেটা ট্রান্সফরমেশন ব্যবহার করে ইলির বা ক্লারের মতো ইউক্যালিডিয়ান স্পেসে প্রজেক্ট করতে পারেন।

( উদাহরণ )

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