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