का उपयोग कर मिलानों का प्रतिशत रैंक मैं लेवेनशेटिन दूरी एल्गोरिदम का उपयोग करके संभावित मैचों के शब्दकोश के खिलाफ एक एकल खोज शब्द से मिलान करने का प्रयास कर रहा हूं। एल्गोरिदम खोज स्ट्रिंग को मिलान की गई स्ट्रिंग में परिवर्तित करने के लिए आवश्यक संचालन की संख्या के रूप में व्यक्त दूरी को लौटाता है। मैं परिणामों को शीर्ष "एन" (10 कहें) मैचों की रैंक प्रतिशत सूची में प्रस्तुत करना चाहता हूं।लेवेनशेटिन दूरी मिलान
चूंकि खोज स्ट्रिंग व्यक्तिगत शब्दकोश तारों की तुलना में लंबी या छोटी हो सकती है, इसलिए दूरी को प्रतिशत के रूप में व्यक्त करने के लिए उचित तर्क क्या होगा, जो गुणात्मक रूप से फिर से पूछेगा कि "प्रतिशत के रूप में" कितना करीब प्रश्न है स्ट्रिंग, 100% सटीक मिलान का संकेत देता है।
Q = query string
M = matched string
PM = Percentage Match
Option 1. PMi = (1 - Lev_distance(Q, Mi)/Strlen(Q)) * 100
Option 2. PMi = (1 - Lev_distance(Q, Mi)/max(Strlen(Q), strlen(Mi))) * 100
विकल्प 1 नकारात्मक प्रतिशत करने की संभावना के मामले में दूरी खोज स्ट्रिंग की लंबाई, जहां मैच स्ट्रिंग लंबा है से अधिक है है:
मैं इन विकल्पों पर विचार किया। उदाहरण के लिए "एबीसी कॉर्प" से मेल खाता "एबीसी" क्वेरी परिणामस्वरूप नकारात्मक मिलान प्रतिशत होगा।
विकल्प 2 एम आई का एक सेट में एकरूप प्रतिशत देने के लिए प्रकट नहीं होता है, के रूप में प्रत्येक गणना संभवतः एक अलग भाजक का प्रयोग करेंगे और इसलिए परिणामस्वरूप प्रतिशत मान सामान्यीकृत नहीं होगा।
केवल अन्य तरीकों से मैं सोच सकता हूं कि lev_distance की तुलना स्ट्रिंग लेंस के साथ तुलना करना है, लेकिन इसके बजाय शीर्ष "एन" मैचों की तुलनात्मक दूरी को एक व्यस्त प्रतिशत रैंक (100-प्रतिशत-रैंक) के रूप में प्रस्तुत करना है।
कोई विचार? क्या बेहतर दृष्टिकोण हैं? मुझे कुछ याद आना चाहिए क्योंकि लेवेनशेटिन दूरी शायद अस्पष्ट मैचों के लिए सबसे आम एल्गोरिदम है और यह एक बहुत ही आम समस्या होनी चाहिए।
क्या आपके 1 विकल्प के बारे में, लेकिन जब देता है परिणाम ऋणात्मक है तो बस 0 वापस आते हैं? पीएस: मैंने यहां समस्या भी पोस्ट की है http://math.stackexchange.com/questions/1776860/convert-levenshtein-distance-to-percents –
मुझे समझ में नहीं आया कि विकल्प 2 के साथ समस्या क्या है क्योंकि मैंने बिल्कुल लागू किया है उसी तर्क का आप वर्णन करते हैं और ठीक से काम करने लगते हैं। क्या आप इसे बेहतर समझा सकते हैं? – Roberto14