সাম্য গ্রুপে স্ট্রিংগুলির একটি দীর্ঘ তালিকা (শব্দ) ক্লাস্টারিং


31

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

আমি প্যাটার্ন রিকগনিশন সাহিত্যে ক্লাসিকাল আন-সার্ভিস ক্লাস্টারিং পদ্ধতিগুলি যেমন কে-মানে ক্লাস্টারিং, ইএম ক্লাস্টারিংয়ের বিষয়ে ভালভাবে অবগত। এখানে সমস্যা হ'ল এই পদ্ধতিগুলি পয়েন্টগুলিতে কাজ করে যা কোনও ভেক্টর স্পেসে থাকে। আমার হাতে এখানে স্ট্রিংয়ের শব্দ রয়েছে। আমার জরিপের প্রয়াস অনুসারে, এখনও মনে হচ্ছে যে কীভাবে একটি সংখ্যক ভেক্টর স্পেসে স্ট্রিংগুলি উপস্থাপন করতে হবে এবং স্ট্রিং ক্লাস্টারের "অর্থ" গণনা করা হবে তার প্রশ্নের যথেষ্ট উত্তর দেওয়া যায় না। এই সমস্যাটিকে আক্রমণ করার জন্য একটি নির্বোধ দৃষ্টিভঙ্গি লেভেনস্টাইন দূরত্বের সাথে ক্লাস্টারিং কে-মিনসকে একত্রিত করা হবে, তবে এখনও প্রশ্নটি "স্ট্রিংগুলির" মানে "কীভাবে উপস্থাপন করবেন?"। টিএফ-আইডিএফ ওজন হিসাবে পরিচিত একটি ওজন রয়েছে, তবে মনে হয় এটি বেশিরভাগ ক্ষেত্রে "টেক্সট ডকুমেন্ট" ক্লাস্টারিংয়ের সাথে সম্পর্কিত, একক শব্দের গুচ্ছায় নয়। http://pike.psu.edu/cleandb06/papers/CameraReady_120.pdf

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


1
আমি "কে-মেডোইডস" নামে কে-মানেগুলির বৈকল্পিকের অস্তিত্ব সম্পর্কে জানতে পেরেছি। en.wikipedia.org/wiki/K-medoids এটা witk ও L2 Euclidian দূরত্ব কাজ করে না এবং এর মানে হল হিসাব দরকার নেই। এটি ডেটা পয়েন্ট ব্যবহার করে যা একটি ক্লাস্টারে থাকা অন্যগুলির নিকটতম "মেডোড" হিসাবে ব্যবহার করে।
উফুক ক্যান্সার বিচিকী

1
It seems that there are some special string clustering algorithms। আপনি যদি পরিসংখ্যান / ডেটা বিশ্লেষণ নয়, নির্দিষ্টভাবে পাঠ্য-খনির ক্ষেত্র থেকে এসে থাকেন তবে এই বিবৃতিটি নিশ্চিত করা হয়েছে। তবে, আপনি যদি ক্লাস্টারিং শাখাটি শিখেন তবে এটি দেখতে পাবেন যে স্ট্রিং ডেটার জন্য কোনও "বিশেষ" অ্যালগরিদম নেই। "বিশেষ" হ'ল আপনি কোনও ক্লাস্টার বিশ্লেষণে ইনপুট করার আগে আপনি কীভাবে এই জাতীয় ডেটা প্রাক-প্রক্রিয়াজাত করেন।
ttnphns


অ্যাফিনিটি প্রচার এবং কে-মাইন ক্লাস্টারিংয়ের মধ্যে পার্থক্যটি নোট করুন এবং এটি গণনার সময়কে কীভাবে প্রভাবিত করবে। quora.com/…
গ্যাব্রিয়েল অ্যালন

উত্তর:


37

দ্বিতীয়ত @ মাইক্রনের আত্মীয়তার প্রচারের জন্য সুপারিশ ।

কাগজ থেকে: এল ফ্রে, ব্রেন্ডন জে এবং ডেলবার্ট ডিউক। "ডেটা পয়েন্টের মধ্যে বার্তা প্রেরণে ক্লাস্টারিং।" বিজ্ঞান 315.5814 (2007): 972-976।

অনেক প্যাকেজ মাধ্যমে এটি ব্যবহার করা সহজ। আপনি জোড়ের মতো মিলের যে কোনওটি সংজ্ঞায়িত করতে পারেন এমন কোনও ক্ষেত্রে এটি কাজ করে। যা আপনি লেভেনস্টাইন দূরত্বকে -1 দ্বারা গুণিত করে পেতে পারেন।

আপনার প্রশ্নের প্রথম অনুচ্ছেদটিকে ইনপুট হিসাবে ব্যবহার করে আমি একটি দ্রুত উদাহরণ একসাথে ছুঁড়েছি। পাইথন 3 এ:

import numpy as np
import sklearn.cluster
import distance

words = "YOUR WORDS HERE".split(" ") #Replace this line
words = np.asarray(words) #So that indexing with a list will work
lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in words] for w2 in words])

affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed", damping=0.5)
affprop.fit(lev_similarity)
for cluster_id in np.unique(affprop.labels_):
    exemplar = words[affprop.cluster_centers_indices_[cluster_id]]
    cluster = np.unique(words[np.nonzero(affprop.labels_==cluster_id)])
    cluster_str = ", ".join(cluster)
    print(" - *%s:* %s" % (exemplar, cluster_str))

আউটপুটটি ছিল (যে ক্লাস্টারের বাম দিকে তারা উদাহরণস্বরূপ এটির উদাহরণস্বরূপ):

  • আছে: সম্ভাবনা, সম্পাদনা, হাত, আছে, উচ্চ
  • নিম্নলিখিত: অনুসরণ
  • সমস্যা: সমস্যা
  • আমি: আমি, এ, এ, ইত্যাদি, ইন, তালিকা, এর
  • সম্ভবত: সম্ভবত
  • গুচ্ছ: গুচ্ছ
  • শব্দ: জন্য, এবং, দীর্ঘ, প্রয়োজন, খুব, শব্দ, শব্দ
  • অনুরূপ: অনুরূপ
  • লেভেনস্টাইন: লেভেনস্টাইন in
  • দূরত্ব: দূরত্ব
  • যে: যে, এই, এই, সাথে
  • একই: উদাহরণস্বরূপ, তালিকা, নামগুলি একই, যেমন, পদবি
  • অ্যালগরিদম: অ্যালগরিদম, অ্যালগরিদম
  • প্রদর্শিত: উপস্থিত, উপস্থিত

এলোমেলো প্রথম 50 টি নামের তালিকায় এটি চালানো :

  • ডায়ান: ডিয়ানা, ডায়ান, ডিওন, জেরাল্ড, ইরিনা, লিসেট, মিন্না, নিকি, রিকি
  • জানি: ক্লেয়ার, জানি, জেসন, জেসি, কিমি, ল্যাং, মার্কাস, ম্যাক্সিমা, রেন্ডি, রাউল
  • ভার্লাইন: ডেসটিনি, কেলি, মেরিলিন, মার্সিডিজ, স্টার্লিং, ভার্লিন
  • গ্লেন: এলেনর, গ্লেন, গেন্ডেনা
  • আরমান্ডিনা: আরমান্ডিনা, অগাস্টিনা
  • শিলা: আহমেদ, এস্টেলা, মিলিসা, শিলা, থ্রেসা, উইনেল ll
  • লরেন: শরৎ, হ্যডি, লরেন, লরেন
  • আলবার্তো: আলবার্থা, আলবার্তো, রবার্ট
  • লোর: অ্যামি, ডোরিন, ইউরা, জোসেফ, লোর, লরি, পোর্টার

আমার কাছে দেখতে দুর্দান্ত লাগছে (এটি মজাদার ছিল)।


কেবলমাত্র স্কলার্ন ব্যবহার করে একই অ্যালগরিদম পাওয়া সম্ভব? বা হ্যামিংয়ের সাথে scipy.spatial.distance ব্যবহার করবেন? লেভেনস্টাইন ব্যবহার করার সুবিধা কী? : আমি অনুমান আমি এই প্রশ্নের ব্যবহার করার চেষ্টা করুন করতে হবে stackoverflow.com/questions/4588541/...
Pierre

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

আপনি যদি সত্যিই দূরত্বের উপর নির্ভরতা এড়াতে চেয়েছিলেন। আপনি রোসেটটা কোড বাস্তবায়ন
লিন্ডন হোয়াইট

পড়া en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance আমি দেখতে পাচ্ছি কিভাবে পক্ষান্তরণ টাইপো এবং পাইথন জন্য বিশেষভাবে পার্থক্য করতে পারেন এটির জন্য একটি ব্র্যান্ড নতুন প্যাকেজ রয়েছে। আমি দেখতে পাচ্ছি কীভাবে আমি শব্দের তালিকার বিরুদ্ধে এটি ব্যবহার করতে পারি এবং "নিকটতম একটি" পাই তবে এটি সবচেয়ে গুরুত্বপূর্ণ নাও হতে পারে। আমাকে আমার তালিকা পেতে হবে এবং টিএফ-আইডিএফ দিয়ে চেক করতে হবে। কুল তোমাকে ধন্যবাদ
Pierre

1
@dduhaime প্রায় অবশ্যই সাধারণভাবে অ্যাফিনিটি প্রচারটি ননসিমেট্রিক অনুচ্ছেদের জন্য কাজ করে, তবে যেহেতু এটি প্রতিসম হয় তাই এগিয়ে যান। আমি নিশ্চিত যে সায়পাইয়ের কোনও কিছুর একটি ত্রিভুজাকার ম্যাট্রিক্স টাইপ রয়েছে যা সম্পূর্ণ ম্যাট্রিক্স হিসাবে ডাকটাইপস। আমি জুলিয়া-ল্যাং জমিতে অনেক দীর্ঘ হয়ে গেছি এবং অজগরে এটি কীভাবে করা হয় তা মনে করতে পারি না। (জুলিয়ায় আপনি ব্যবহার করবেন Symmetric)
লন্ডন হোয়াইট

5

ল্যাভাইন ক্লাস্টারিং, সীমাবদ্ধ নেবারহুড অনুসন্ধান ক্লাস্টারিং (আরএনএসসি), অ্যাফিনিটি প্রোপেশন ক্লাস্টারিং (এপিসি), বা মার্কভ ক্লাস্টার অ্যালগরিদম (এমসিএল) এর মতো গ্রাফ ক্লাস্টারিং অ্যালগরিদম ব্যবহার করুন।


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

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

2

আপনি ভেক্টর স্পেস এন্ট্রি হিসাবে শব্দের এন-গ্রাম দিয়ে ভেক্টর স্পেস মডেলটি চেষ্টা করতে পারেন। আমি মনে করি আপনাকে দূরত্ব সম্পাদনা করার পরিবর্তে এই ক্ষেত্রে কোসাইন মিলের মতো একটি পরিমাপ ব্যবহার করতে হবে।

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