দুটি শব্দের মধ্যে মিল


15

আমি একটি পাইথন গ্রন্থাগার সন্ধান করছি যা আমাকে দুটি শব্দ বা বাক্যের মধ্যে মিল খুঁজে পেতে সহায়তা করে।

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

উদাহরণ:

1) পাঠ্য থেকে অডিও ফলাফল: আমেরিকা এক্সপেনশন কল করার জন্য ধন্যবাদ আমেরিকান এক্সপ্রেসের সাথে তুলনা করা হবে ।

উভয় বাক্য একরকম হলেও একই রকম নয়।

দেখে মনে হচ্ছে তারা কয়টি অক্ষর ভাগ করে নেবে তা খতিয়ে দেখার দরকার হতে পারে। যে কোনও ধারণা দুর্দান্ত হবে। গুগল অনুসন্ধান "আপনি কী বোঝাতে চেয়েছিলেন" বৈশিষ্ট্যটির মতো কার্যকারিতা দেখায়।

উত্তর:


14

লেবেস্টেস্টিনের দূরত্ব (জনপ্রিয়তাকে এডিট দুরত্ব হিসাবেও চিহ্নিত করা হয়) জ্যান এই উত্তরটির মতো উল্লেখ করেছেন বলে নিকটতমটি হবে ।

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

অনুরূপ শব্দের সনাক্তকরণের জন্য এটি একটি খুব সাধারণভাবে ব্যবহৃত মেট্রিক। এনটলেটকের ইতিমধ্যে সম্পাদনা দূরত্বের মেট্রিকের জন্য একটি প্রয়োগ রয়েছে, যা নিম্নলিখিত উপায়ে প্রার্থনা করা যেতে পারে:

import nltk
nltk.edit_distance("humpty", "dumpty")

উপরের কোডটি ফিরে আসবে 1, কারণ কেবল দুটি অক্ষরের মধ্যে একটি অক্ষরই আলাদা different


1
ল্যাভনেস্টিয়েনের দূরত্বটি সবচেয়ে খারাপ অ্যালগরিদম যা আপনি ব্যবহার করতে পারেন যদি এনএলপি আপনি যা করতে চান তা হয়। যদি 2 প্রতিশব্দটির আলাদা অক্ষর সেট থাকে তবে এলডি সেই ক্ষেত্রে খুব খারাপভাবে সম্পাদন করবে।
এটি একটি ফাঁদ

8

এখানে খুব ভাল প্রতিক্রিয়া বাদে আপনি ডিফ্লিব পাইথন লাইব্রেরিতে সিকোয়েন্সম্যাচার চেষ্টা করতে পারেন।

https://docs.python.org/2/library/difflib.html

import difflib

a = 'Thanks for calling America Expansion'
b = 'Thanks for calling American Express'

seq = difflib.SequenceMatcher(None,a,b)
d = seq.ratio()*100
print(d) 
### OUTPUT: 87.323943

এখন নীচের কোডটি বিবেচনা করুন:

a = 'Thanks for calling American Expansion'
b = 'Thanks for calling American Express'

seq = difflib.SequenceMatcher(None,a,b)
d = seq.ratio()*100
print(d)
### OUTPUT: 88.88888

সাদৃশ্যটি মূল্যায়নের জন্য আপনি এখন d এর সাথে তুলনা করতে পারেন।


1
আপনি যদি মনে করেন যে seq.ratio () ধীর গতিতে রয়েছে, আপনি seq.quick_ratio ()
নবীন

6

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

লেভ (বিড়ালছানা, বসা) = 3

  • k itten -> s itten
  • সিট এন -> সিট আই এন
  • সিটিন -> সিটিন জি

এখানে উইকিউবুকগুলিতে কিছু পাইথন সরঞ্জাম রয়েছে।

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


(+1) লেভের জন্য। দূরত্বের মেট্রিক। nltk একটি রেডিমেড বাস্তবায়ন নিয়ে আসে। কোসাইন আদল একটি ভাল স্ট্রিং-আদল পরিমাপ এই প্রোগ্রামটিতে :) নয়
Dawny33

আমি সম্মত হই যে এটি লেভেনস্টাইন দূরত্বের চেয়ে অনেক খারাপ তবে আপনার যদি কয়েক মিলিয়ন
ড্যাটাসেটের মধ্যে ঝাপসা ম্যাচিংয়ের

1
@ Dawny33- এর সাথে আমি একমত নই কেবলমাত্র কোসাইন মিল আমার জন্য খুব দ্রুত কাজ করে নি তবে সঠিকভাবে এন-গ্রাম ব্যবহার করা হয়েছে তাও খুব সঠিকভাবে দেওয়া হয়েছে।
মোহিত মোতওয়ানি

3

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

তবে স্পিচ-টু-টেক্সট সনাক্তকরণ ইঞ্জিনের ফলাফলগুলিতে সাউন্ডেক্সের মতো কিছু প্রয়োগ করা কিছুটা অদ্ভুত বলে মনে হয়। প্রথমে আপনি শব্দগুলি কীভাবে উচ্চারণ করা হয় সে সম্পর্কে তথ্য ছুঁড়ে ফেলাবেন, তারপরে আপনি এটিকে আবার যুক্ত করার চেষ্টা করবেন। এই দুটি পর্যায় একত্রিত করা ভাল be

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

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