लेवेंशेटिन एक स्ट्रिंग को दूसरे में बदलने के लिए आवश्यक संपादन (सम्मिलन, विलोपन, या प्रतिस्थापन) की संख्या को गिनता है। डैमेरू-लेवेन्शिन एक संशोधित संस्करण है जो ट्रांसपोज़िशन को एकल संपादन भी मानता है। हालाँकि आउटपुट एडिटर्स की पूर्णांक संख्या है, लेकिन इसे सूत्र द्वारा समानता मूल्य देने के लिए सामान्यीकृत किया जा सकता है
1 - (edit distance / length of the larger of the two strings)
यारो एल्गोरिथ्म आम तौर पर वर्णों का एक माप है, दूरी में लम्बी स्ट्रिंग की लंबाई की आधी से अधिक नहीं होने के कारण, ट्रांसपोज़िशन के लिए विचार के साथ। विंकलर ने इस एल्गोरिथ्म को इस विचार का समर्थन करने के लिए संशोधित किया कि स्ट्रिंग की शुरुआत के पास अंतर स्ट्रिंग के अंत के पास के अंतर से अधिक महत्वपूर्ण हैं। यारो और यारो-विंकलर शब्दों और नामों जैसे छोटे तारों की तुलना करने के लिए उपयुक्त हैं।
निर्णय लेना कि कौन सा उपयोग करना है, यह केवल प्रदर्शन का विषय नहीं है। ऐसी विधि चुनना महत्वपूर्ण है जो आपके द्वारा तुलना किए जा रहे तार की प्रकृति के अनुकूल हो। सामान्य तौर पर, आपके द्वारा उल्लिखित दोनों एल्गोरिदम महंगे हो सकते हैं, क्योंकि प्रत्येक स्ट्रिंग की तुलना हर दूसरे स्ट्रिंग से की जानी चाहिए, और आपके डेटा सेट में लाखों स्ट्रिंग्स के साथ, यह तुलनाओं की जबरदस्त संख्या है। यह प्रत्येक स्ट्रिंग के लिए ध्वन्यात्मक एन्कोडिंग की गणना करने जैसी किसी चीज़ की तुलना में बहुत अधिक महंगा है, और फिर समान एन्कोडिंग साझा करने वाले तारों को समूहीकृत करता है।
इन एल्गोरिदम और इंटरनेट पर अन्य फजी स्ट्रिंग मिलान एल्गोरिदम पर विस्तृत जानकारी का खजाना है। यह आपको एक शुरुआत देगा:
व्यक्तिगत नाम मिलान की तुलना: तकनीक और व्यावहारिक मुद्दे
उस कागज के अनुसार, मैंने जो चार जरो और लेवेन्शिन एल्गोरिदम का उल्लेख किया है उनकी गति सबसे तेज से सबसे धीमी है:
- Jaro
- Jaro-विंकलर
- Levenshtein
- Damerau-Levenshtein
सबसे धीमी गति से 2 से 3 बार सबसे धीमी गति से। बेशक ये समय स्ट्रिंग्स और कार्यान्वयन की लंबाई पर निर्भर हैं, और इन एल्गोरिदम को अनुकूलित करने के तरीके हैं जिनका उपयोग नहीं किया गया हो सकता है।