পাঠ্য মাইনিং: কৃত্রিম বুদ্ধিমত্তার সাথে কীভাবে ক্লাস্টার পাঠ্যগুলি (যেমন নিউজ নিবন্ধগুলি)?


15

আমি বিভিন্ন কাজের জন্য কিছু নিউরাল নেটওয়ার্ক (এমএলপি (সম্পূর্ণরূপে সংযুক্ত), এলম্যান (পুনরাবৃত্ত) তৈরি করেছি, যেমন পং খেলা, হাতের লেখার অঙ্কগুলি এবং স্টাফ শ্রেণিবদ্ধকরণ ...

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

পাঠ্য খনির জন্য, উদাহরণস্বরূপ সংবাদ নিবন্ধগুলির জন্য, আপনার কাছে ইনপুটটির সর্বদা পরিবর্তনশীল আকার রয়েছে (বিভিন্ন শব্দ, বিভিন্ন বাক্য, বিভিন্ন পাঠ্যের দৈর্ঘ্য, ...)।

একজন কীভাবে কৃত্রিম বুদ্ধিমত্তা, স্নায়বিক নেটওয়ার্ক / এসওএমগুলি ব্যবহার করতে পারেন?

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

উত্তর:


12

প্রচ্ছন্ন ডিরিচলেট বরাদ্দ (এলডিএ) দুর্দান্ত, তবে আপনি যদি নিউরাল নেটওয়ার্ক ব্যবহার করেন এমন আরও ভাল কিছু চান তবে আমি ডকুমেন্ট ( https://radimrehurek.com/gensim/models/doc2vec.html ) এর জন্য দৃ .়ভাবে পরামর্শ দেব ।

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

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

পরিশেষে, বৈশিষ্ট্য ভেক্টর নিষ্কাশন করতে আপনি এটি হিসাবে সহজ করতে পারেন:

from gensim.models import Doc2Vec
from gensim.models.doc2vec import LabeledSentence

class LabeledLineSentence(object):
    def __init__(self, filename):
        self.filename = filename
    def __iter__(self):
        for uid, line in enumerate(open(self.filename)):
            yield LabeledSentence(words=line.split(), labels=['TXT_%s' % uid])


sentences = LabeledLineSentence('your_text.txt')

model = Doc2Vec(alpha=0.025, min_alpha=0.025, size=50, window=5, min_count=5,
                dm=1, workers=8, sample=1e-5)

model.build_vocab(sentences)

for epoch in range(500):
    try:
        print 'epoch %d' % (epoch)
        model.train(sentences)
        model.alpha *= 0.99
        model.min_alpha = model.alpha
    except (KeyboardInterrupt, SystemExit):
        break

2
দেখে মনে হচ্ছে এনএলপি সাহিত্যে এলডিএ বোঝায় লেটেন্ট ডিরিচলেট বিশ্লেষণ। এই সাহিত্যে লিনিয়ার বৈষম্য বিশ্লেষণের কোনও ব্যবহার খুঁজে পাওয়া যায় না?
সিড

হুবহু, এলডিএ হ'ল লেটেন্ট ডিরিচলেট বরাদ্দ আমাদের ক্ষেত্রে।
ইয়ান্নিস Assael

5

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

স্কেলার্নে উদাহরণ ( এখান থেকে নেওয়া ):

dataset = fetch_20newsgroups(subset='all', shuffle=True, random_state=42)
labels = dataset.target
true_k = np.unique(labels).shape[0]

vectorizer = TfidfTransformer()
X = vectorizer.fit_transform(dataset.data)

svd = TruncatedSVD(true_k)
lsa = make_pipeline(svd, Normalizer(copy=False))

X = lsa.fit_transform(X)

km = KMeans(n_clusters=true_k, init='k-means++', max_iter=100)
km.fit(X)

এখন ক্লাস্টার অ্যাসাইনমেন্ট লেবেলগুলি উপলব্ধ km.labels_

উদাহরণস্বরূপ, এগুলি এলএসএ সহ 20 টি নিউজগ্রুপ থেকে নেওয়া বিষয়গুলি:

Cluster 0:  space  shuttle  alaska  edu  nasa  moon  launch  orbit  henry  sci
Cluster 1:  edu  game  team  games  year  ca  university  players  hockey  baseball
Cluster 2:  sale  00  edu  10  offer  new  distribution  subject  lines  shipping
Cluster 3:  israel  israeli  jews  arab  jewish  arabs  edu  jake  peace  israelis
Cluster 4:  cmu  andrew  org  com  stratus  edu  mellon  carnegie  pittsburgh  pa
Cluster 5:  god  jesus  christian  bible  church  christ  christians  people  edu  believe
Cluster 6:  drive  scsi  card  edu  mac  disk  ide  bus  pc  apple
Cluster 7:  com  ca  hp  subject  edu  lines  organization  writes  article  like
Cluster 8:  car  cars  com  edu  engine  ford  new  dealer  just  oil
Cluster 9:  sun  monitor  com  video  edu  vga  east  card  monitors  microsystems
Cluster 10:  nasa  gov  jpl  larc  gsfc  jsc  center  fnal  article  writes
Cluster 11:  windows  dos  file  edu  ms  files  program  os  com  use
Cluster 12:  netcom  com  edu  cramer  fbi  sandvik  408  writes  article  people
Cluster 13:  armenian  turkish  armenians  armenia  serdar  argic  turks  turkey  genocide  soviet
Cluster 14:  uiuc  cso  edu  illinois  urbana  uxa  university  writes  news  cobb
Cluster 15:  edu  cs  university  posting  host  nntp  state  subject  organization  lines
Cluster 16:  uk  ac  window  mit  server  lines  subject  university  com  edu
Cluster 17:  caltech  edu  keith  gatech  technology  institute  prism  morality  sgi  livesey
Cluster 18:  key  clipper  chip  encryption  com  keys  escrow  government  algorithm  des
Cluster 19:  people  edu  gun  com  government  don  like  think  just  access

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

স্কলারনে:

nmf = NMF(n_components=k, random_state=1).fit_transform(X)
labels = nmf.argmax(axis=1)

আপনি প্রতিটি ক্লাস্টারের শীর্ষ শব্দগুলি কীভাবে পেয়েছেন?
মায়ুখ নায়ার

3

LSA + KMeans ভাল কাজ করে তবে আপনি যে পরিমাণ ক্লাস্টার আশা করছেন তা ইনপুট করতে হবে। তাছাড়া পাওয়া ক্লাস্টারের সিলুয়েট সহগ সাধারণত কম থাকে।

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

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


2

আমার প্রিয় পদ্ধতিটি এলডিএ ; আপনি সন্ধান করতে পারেন এখানে একটি টিউটোরিয়াল পাইথন প্যাকেজ ব্যবহার করার জন্য।

আপনি পছন্দ করতে অনেক সহজ পদ্ধতি তাকান পারেন এই

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