मुझे किसी निश्चित आवश्यकता के लिए समाधान कोड करने की आवश्यकता है, और मैं जानना चाहता था कि कोई भी ऑफ-द-शेल्फ लाइब्रेरी से परिचित है या नहीं, जो मुझे प्राप्त कर सकता है या मुझे निर्देशित कर सकता है सबसे अच्छा अभ्यास। विवरण:शब्दों की तुलना करने के लिए एल्गोरिदम (वर्णानुक्रम में नहीं)
उपयोगकर्ता एक शब्द इनपुट करता है जिसे कई निश्चित विकल्पों में से एक माना जाता है (मैं सूची में विकल्प रखता हूं)। मुझे पता है कि इनपुट सूची में किसी सदस्य में होना चाहिए, लेकिन चूंकि यह उपयोगकर्ता इनपुट है, इसलिए उसने गलती की हो सकती है। मैं एक एल्गोरिदम की तलाश में हूं जो मुझे बताएगा कि उपयोगकर्ता का सबसे संभावित शब्द क्या है। मेरे पास कोई संदर्भ नहीं है और मैं उपयोगकर्ता को किसी सूची से चुनने के लिए मजबूर नहीं कर सकता (यानी वह शब्द को स्वतंत्र रूप से और मैन्युअल रूप से इनपुट करने में सक्षम होना चाहिए)।
उदाहरण के लिए, कहें कि सूची में "पानी", "तिमाही", "बियर", "चुकंदर", "नरक", "हैलो" और "आर्डवर्र्क" शब्द शामिल हैं।
समाधान "सामान्य" त्रुटियों के विभिन्न प्रकार के लिए होना चाहिए:
- गति लिखने की त्रुटियों (जैसे पात्रों को दोगुना करने, वर्ण आदि छोड़ने) "पानी के लिए
- कीबोर्ड आसन्न-चरित्र लिखने की त्रुटियों (जैसे" qater " ")
- गैर देशी अंग्रेजी लिखने की त्रुटियों (जैसे" तिमाही "के लिए" quater ")
- और इसी तरह ...
स्पष्ट समाधान पत्र-दर-पत्र की तुलना करना और प्रत्येक अलग-अलग पत्र, अतिरिक्त पत्र और लापता पत्र को "दंड भार" देना है। लेकिन यह समाधान हजारों "मानक" त्रुटियों को अनदेखा करता है जो मुझे यकीन है कि कहीं कहीं सूचीबद्ध हैं। मुझे यकीन है कि वहां ह्यूरिस्टिक्स हैं जो मानक और सामान्य दोनों सामान्य मामलों के साथ सौदा करते हैं, शायद मानक विसंगतियों के बड़े डेटाबेस (मैं डेटा-भारी समाधान के लिए खुला हूं) का उपयोग कर रहा हूं।
मैं पायथन में कोडिंग कर रहा हूं लेकिन मैं इस सवाल को भाषा-अज्ञेयवादी मानता हूं।
कोई सिफारिशें/विचार? http://norvig.com/spell-correct.html
संपादित करें::