2017-01-11 4 views
5

मैं एक ऐसा फ़ंक्शन लिखने की कोशिश कर रहा हूं जो पता लगाता है कि उपयोगकर्ता ने एक विशेष वाक्यांश/वाक्य/शब्द/शब्दों को कितना सटीक टाइप किया है। मेरा उद्देश्य कुछ वाक्यांशों की उपयोगकर्ता की टाइपिंग सटीकता को प्रशिक्षित करने के लिए एक ऐप बनाना है।टाइपिंग सटीकता को मापने के लिए कौन सी स्ट्रिंग दूरी एल्गोरिदम सर्वोत्तम है?

मेरा प्रारंभिक वृत्ति मूल लेवेनशेटिन दूरी एल्गोरिदम का उपयोग करना है (अधिकतर क्योंकि यह केवल एकमात्र अलगाव है जिसे मैं अपने सिर के ऊपर से जानता था)।

लेकिन थोड़ी अधिक शोध के बाद, मैंने देखा कि Jaro-Winkler पारदर्शिता के लिए इसके विचार के कारण थोड़ा और दिलचस्प एल्गोरिदम है।

मैं भी एक कड़ी है कि इन एल्गोरिदम के बीच मतभेदों के बारे में बात करती है पाया:

Difference between Jaro-Winkler and Levenshtein distance?

कि सभी को पढ़ने के बाद, संबंधित विकिपीडिया पदों के अलावा, मैं अभी भी जो एल्गोरिथ्म के रूप में एक छोटे से अनजान हूँ मेरे उद्देश्य को सबसे अच्छा फिट बैठता है।

उत्तर

4

चूंकि आप टाइपिंग की गुणवत्ता ग्रेडिंग कर रहे हैं, और आप छात्र को शून्य गलतियों के लिए प्रशिक्षित करना चाहते हैं, तो आपको लेवेनशेटिन दूरी का उपयोग करना चाहिए, क्योंकि यह कम क्षमाशील है।

इसके अतिरिक्त, लेवेनशेटिन स्कोर जारो-विंकलर परिणामों की तुलना में समझने के लिए अधिक सहज और ग्राफिक रूप से प्रतिनिधित्व करने में आसान है। आप प्रविष्टि, हटाना, और गलत टाइपों को अलग से रिपोर्ट करने के लिए लेवेनशेटिन एल्गोरिदम को संशोधित कर सकते हैं, और अंत उपयोगकर्ताओं को सुधार की एक सूची दिखा सकते हैं। दूसरी ओर, जारो-विंकलर आपको एक स्कोर देता है जो अंतिम उपयोगकर्ता को दिखाना मुश्किल है, क्योंकि बीच में गलत वर्तनी के लिए जुर्माना अंत में जुर्माना से कम है।

3

थोड़ा जीभ-इन-गाल, लेकिन केवल थोड़ा: टाइपिंग के लिए एक जेनरेटिव मॉडल बनाएं जो सही पत्र को मारने के लिए उच्च (पूर्व) संभावना देता है, और दो पड़ोसी कुंजी को एक बार में मारने के लिए कुछ संभावनाओं को विभाजित करता है, दो चाबियाँ गलत क्रम में अलग-अलग हाथ, गलत क्रम में एक ही हाथ से दो चाबियां, सही एक के पास एक कुंजी, सही एक से बहुत दूर, आदि। या शायद कम विज्ञापन: अपने मॉडल को दिए गए लिए एक संभावना दें मार्गों को जारी रखने के लिए आवश्यक कुंजी की वर्तमान जोड़ी को देखते हुए कीप्रेस के अनुक्रम। आप इस तरह के मॉडल के साथ बहुत सी चीजें कर सकते हैं; उदाहरण के लिए, आप सीखने वाले के वास्तविक प्रदर्शन के लिए एक संभावित स्कोर देकर "दूरी" जैसी मीट्रिक प्राप्त कर सकते हैं। लेकिन इससे भी बेहतर होगा कि उन्हें संक्षेप में एक रिपोर्ट देनी होगी कि वे किस प्रकार की त्रुटियों को सबसे अधिक बनाते हैं - आखिरकार, उनके प्रदर्शन को एक ही संख्या में क्यों उबालें जब कई संख्याएं होंगी? बोनस पॉइंट्स यदि आप असली टाइपिस्ट के काम के बड़े कॉर्पस से विभिन्न प्रकार की त्रुटियों के लिए संभावनाएं सीखते हैं।

+0

ओपन सोर्स प्रोजेक्ट के लिए एक अच्छा विचार की तरह लगता है। आप रेपो शुरू करते हैं, मैं योगदान दूंगा। – adrianmc

+0

मुझे त्रुटियों की रिपोर्ट विचार का सारांश पसंद है। मेरे टाइपिंग के लिए मुझे लगता है कि त्रुटियां हैं: 1) अलग-अलग हाथों से गलत चरित्र क्रम। 2) "करीबी शब्द", 'रॉन' -> 'रन' 3) प्रत्यय जोड़ 'रन' -> 'रन' के कारण गलत वर्तनी –

1

मैं ज्यादातर दासब्लिंकलाइट द्वारा दिए गए उत्तर से सहमत हूं, हालांकि, केवल लेवेनशेटिन के बजाय Damerau-Levenshtein distance का उपयोग करने का सुझाव देगा, जिसमें पारदर्शिता भी शामिल है। ट्रांसपोजिशन टाइपिंग करते समय काफी बार और आसान बनाने के लिए होते हैं, और कोई अन्य कारण नहीं है कि उन्हें अन्य संभावित त्रुटियों (सम्मिलन, हटाना, और प्रतिस्थापन) के संबंध में डबल दूरी का जुर्माना क्यों लेना चाहिए।

संबंधित मुद्दे