লেভেনস্টাইন দূরত্বের দ্রুত গণনা করা হচ্ছে


24

অনুমোদিত শব্দগুলির একটি বিশাল ডাটাবেস (বর্ণানুক্রমিকভাবে সাজানো) এবং একটি শব্দ দেওয়া, লেভেনশটিন দূরত্বের দিক দিয়ে প্রদত্ত শব্দের নিকটতম ডাটাবেস থেকে শব্দটি সন্ধান করুন।

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

আমি ভাবছি যে এই সমস্যার আরও কার্যকর সমাধান আছে কিনা। হতে পারে কিছু হিউরিস্টিক যা আমাদের অনুসন্ধানের শব্দের সংখ্যা বা লেভেনস্টেইন দূরত্বের অ্যালগরিদমের অপ্টিমাইজেশনকে হ্রাস করতে দেয়।

বিষয়গুলিতে কাগজের লিঙ্কগুলি স্বাগত।

উত্তর:


16

আপনি যা সম্পর্কে জিজ্ঞাসা করছেন তা হ'ল সম্পাদনার দূরত্বের নীচে থাকা প্রতিবেশী অনুসন্ধানের সমস্যা। আপনি তাত্ত্বিক ফলাফল বা হিউরিস্টিক্সে আগ্রহী কিনা তা আপনি উল্লেখ করেননি, তাই আমি পূর্বেরটিকে উত্তর দেব।

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


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

আমি পুরোপুরি নিশ্চিত নই। আমি সন্দেহ করি যে উত্তরটি সাধারণভাবে নয় তবে আমার কাছে ইশারা করার মতো কিছুই নেই।
সুরেশ ভেঙ্কট

বয়টসভ.ইন.ফো / পবসের দ্বিতীয় পত্রটি লেভেনস্টেইন এবং ডামেরাউ-লেভেনস্টেইন সম্পাদনার দূরত্বের অধীনে নিকটবর্তী প্রতিবেশী অনুসন্ধানের সম্ভাব্য সমাধানগুলির একটি ভাল সমীক্ষা।
a3nm

@ নীলকৃষ্ণস্বামী একটি অতিমাত্রায় একটি এমবেডিংয়ের কমপক্ষে বিকৃতি হবে যেখানে d স্ট্রিংয়ের দৈর্ঘ্য। এই বিকৃতি নিম্ন মধ্যে এম্বেড করার জন্য আবদ্ধ থেকে অনুসরণ করে এল 1 কারণে Krauthgamer এবং Rabani , যেহেতু ultrametrics ইউক্লিডিয় স্থান, যা isometrically এম্বেড মধ্যে isometrically এম্বেড এল 1Ω(logd)dL1L1
সাশো নিকোলভ


5

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

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

এই প্রাথমিক ধারণাটির বেশ কয়েকটি উন্নতি রয়েছে।


1
কাগজের জন্য আপনার পুনরুত্পাদনযোগ্য গবেষণা সংরক্ষণাগারটির একটি লিঙ্ক অন্তর্ভুক্ত করা উচিত ছিল ।
ড্যান ডি

4

একটি সহজ সমাধান হ'ল শব্দগুলি ট্রাই হিসাবে সংরক্ষণ করা। এরপরে আপনি ট্রাইয়ের বিপরীতে কোয়েরি শব্দের লেভেনস্টেইনের দূরত্বকে প্রতিটি শব্দের বিপরীতে পৃথকভাবে গণনা না করে স্ট্যান্ডার্ড ডায়নামিক প্রোগ্রামিং অ্যালগরিদম দিয়ে গণনা করতে পারেন। সবচেয়ে খারাপ সময়ের সময় জটিলতা asyptotically উন্নত করা হয় না, তবে আপনি যদি প্রথমে সবচেয়ে প্রতিশ্রুতিবদ্ধ শাখা প্রসারিত করেন, আপনি ক্যোরি দৈর্ঘ্য মি , বর্ণমালার আকার σ , এবং দূরত্বের কে সম্পাদনা করার জন্য সময় জাতীয় কিছু পাবেন ।O(mk+1σk)mσk


4

আমি cs.stackexchange.com ( /cs//a/2096/1490 ) তে খুব অনুরূপ প্রশ্নের উত্তর লিখেছিলাম এবং তারপরে আমি এই প্রশ্নটি পেয়েছি। উত্তরটি সম্পাদনার দূরত্বে প্রায় নিকটবর্তী প্রতিবেশী অনুসন্ধানের জন্য (যেমন অ্যালগোরিদম একটি স্ট্রিং আউটপুট দেয় যা ক্যোয়ারী স্ট্রিংয়ের নিকটতম প্রতিবেশীর মতো প্রায় ক্যোরির স্ট্রিংয়ের নিকটবর্তী)। আমি এখানে পোস্ট করছি যেহেতু আমি এখানে দেওয়া উত্তরগুলিতে আমি যে কোনও উল্লেখ পেয়েছি তা খুঁজে পাচ্ছি না।


3

আমার মনে হয় আপনি যা চান ওয়াগনার-ফিশার অ্যালগরিদম: https://en.wikedia.org/wiki/Wagner%E2%80%93 ফিশার_ালগোরিদিম মূল অন্তর্দৃষ্টিটি হ'ল যেহেতু আপনি যে অভিধানটি অনুসরণ করছেন সেটি বাছাই করা হয়েছে, পর পর দুটি শব্দ একটি দীর্ঘ উপসর্গ ভাগ করার খুব সম্ভবত তাই আপনাকে প্রতিটি দূরত্বের গণনার জন্য পুরো ম্যাট্রিক্স আপডেট করার দরকার নেই।


2

আপনি ব্যবহার করতে পারেন আপনার অর্থ ছিল?

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


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

@ হাক বেনেট: আমি ভেবেছিলাম @ গ্রেগরি জাভদান Did you mean?ফিচার তৈরি করছে। Did you mean?প্রদত্ত ইনপুটটির খুব কাছাকাছি থাকা শব্দটি বেশ দক্ষতার সাথে সম্পাদন করে returns :)
প্রতীক দেওঘরে

আমি মনে করি আপনার ধারণাগুলি ভাল, তবে মনে হচ্ছে গ্রিগরি আরও গভীর এবং আরও নির্দিষ্ট কিছু জিজ্ঞাসা করছে।
হক বনেট

@ হকের বেনেট: হ্যাঁ আপনি ঠিক বলেছেন! :)
প্রতীক দেওঘরে

-1

একটি উপায় হ'ল ভেক্টরগুলিতে শব্দের মানচিত্র তৈরির জন্য এবং ইউক্যালিডিয়ান দূরত্বের লেভেনস্টেইন দূরত্বকে মানচিত্র করার জন্য একটি মেশিন লার্নিং মডেলকে প্রশিক্ষণ দেওয়া। তারপরে আপনি যে অভিধানটি ব্যবহার করতে চান তার জন্য ভেক্টরগুলির বাইরে আপনি একটি কেডিট্রি তৈরি করতে পারেন। আমি এখানে একটি জপিটার নোটবুক তৈরি করেছি যা এখানে এটি করে: https://gist.github.com/MichaelSnowden/9b8b1e662c98c514d571f4d5c20c3a03

ডিডাব্লু এর মন্তব্য অনুযায়ী:

  1. প্রশিক্ষণ পদ্ধতি = অভিযোজিত গ্রেডিয়েন্টগুলির সাথে স্টোকাস্টিক গ্রেডিয়েন্ট বংশোদ্ভূত
  2. ক্ষতি ফাংশন = সত্যিকারের সম্পাদনার দূরত্ব এবং ইউক্লিডিয়ান দূরত্বের মধ্যে স্কোয়ার ত্রুটি
  3. প্রশিক্ষণ ডেটা = 1 থেকে 32 অক্ষরের মধ্যে দীর্ঘ এলোমেলো স্ট্রিং (সাধারণ টাইপের প্রকৃত বিতরণের সাথে মেলে এমন ডেটা দিয়ে উন্নত করা যেতে পারে)
  4. পরিমাণগত ফলাফল: 2048 আকারের একটি ব্যাচ আকারের (প্রাচীরের সময় = প্রায় এক মিনিট) প্রায় 150 টি যুগের প্রশিক্ষণের পরে, একটি গোপন স্তর সহ 512 মাত্রার শব্দের এম্বেডিং ব্যবহার করে, সত্য সম্পাদনা দূরত্ব এবং পূর্বাভাসিত সম্পাদনার দূরত্বের মধ্যে গড় পরম ত্রুটি প্রায় 0.75 এর কাছাকাছি বসে, যার অর্থ পূর্বাভাস সম্পাদনা দূরত্ব প্রায় এক অক্ষর বন্ধ

মডেল কাঠামোর সংক্ষিপ্তসার:

  1. নাল অক্ষর সহ প্রতিটি চরিত্রের জন্য একটি শিখা এম্বেডিং তৈরি করুন (অক্ষরের সীমাতে ডান-প্যাড পাঠ্যের পরে ব্যবহৃত হবে)
  2. শূন্য অক্ষরের সাথে পাঠ্যটির ডান দিকটি প্যাড করুন যতক্ষণ না এটি অক্ষর সীমাতে থাকে (32)
  3. এই এম্বেডিংগুলিকে সংযুক্ত করুন
  4. নিম্ন-মাত্রিক শব্দ এম্বেডিং (512-মাত্রিক) তৈরি করতে ফিড-ফরোয়ার্ড নিউরাল নেট এর মাধ্যমে এম্বেডিংগুলি চালান
  5. উভয় শব্দের জন্য এটি করুন
  6. ভেক্টরগুলির মধ্যে ইউক্যালিডিয়ান দূরত্বটি সন্ধান করুন
  7. ক্ষতিটিকে সত্য লেভেনস্টাইন দূরত্ব এবং ইউক্যালিডিয়ান দূরত্বের মধ্যবর্তী বর্গক্ষেত্র ত্রুটি হিসাবে সেট করুন

আমার প্রশিক্ষণের ডেটা কেবল এলোমেলো স্ট্রিং, তবে আমি মনে করি প্রশিক্ষণ ডেটা (টাইপো / সঠিক শব্দ) জোড়া থাকলে ফলাফলগুলি সত্যিই উন্নতি করতে পারে। আমি কেবল ব্যবহার করে শেষ করেছি /usr/share/dict/wordsকারণ এটি সাধারণত পাওয়া যায়।


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

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

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

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

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