2
โครงสร้างข้อมูลที่มีประสิทธิภาพสำหรับการสร้างเครื่องมือตรวจสอบการสะกดคำอย่างรวดเร็ว
ฉันกำลังพยายามเขียนตัวตรวจการสะกดซึ่งควรใช้กับพจนานุกรมที่มีขนาดค่อนข้างใหญ่ ฉันต้องการวิธีที่มีประสิทธิภาพในการจัดทำดัชนีข้อมูลพจนานุกรมของฉันโดยใช้ระยะทางDamerau-Levenshteinเพื่อกำหนดว่าคำใดที่ใกล้เคียงที่สุดกับคำที่สะกดผิด ฉันกำลังมองหาโครงสร้างข้อมูลที่จะให้ความประนีประนอมระหว่างความซับซ้อนของพื้นที่กับความซับซ้อนของรันไทม์ได้ดีที่สุด จากสิ่งที่ฉันพบบนอินเทอร์เน็ตฉันมีโอกาสในการขายไม่กี่เกี่ยวกับประเภทของโครงสร้างข้อมูลที่จะใช้: Trie นี่เป็นความคิดแรกของฉันและดูใช้งานได้ง่ายและควรมีการค้นหา / แทรกอย่างรวดเร็ว การค้นหาโดยประมาณโดยใช้ Damerau-Levenshtein ควรง่ายต่อการใช้งานที่นี่เช่นกัน แต่มันไม่ได้ดูมีประสิทธิภาพมากนักในแง่ของความซับซ้อนของพื้นที่เนื่องจากคุณมักจะมีค่าใช้จ่ายจำนวนมากกับที่เก็บข้อมูลพอยน์เตอร์ Patricia Trie ดูเหมือนว่าจะใช้เนื้อที่น้อยกว่า Trie ปกติเนื่องจากคุณไม่ต้องเสียค่าใช้จ่ายในการเก็บพอยน์เตอร์ แต่ฉันกังวลเกี่ยวกับการแยกส่วนข้อมูลในกรณีที่พจนานุกรมมีขนาดใหญ่มากเหมือนที่ฉันมี ต้นไม้ต่อท้าย ฉันไม่แน่ใจเกี่ยวกับสิ่งนี้ดูเหมือนว่าบางคนจะพบว่ามีประโยชน์ในการทำเหมืองข้อความ แต่ฉันไม่แน่ใจว่าสิ่งที่จะให้ในแง่ของประสิทธิภาพสำหรับตัวตรวจสอบการสะกด Ternary Search Tree สิ่งเหล่านี้ดูดีมากและในแง่ของความซับซ้อนควรอยู่ใกล้ (ดีกว่า) กับ Patricia Tries แต่ฉันไม่แน่ใจเกี่ยวกับการแยกส่วนหากมันจะดีกว่าแย่กว่า Patricia Tries ต้นไม้ระเบิด ดูเหมือนว่าจะเป็นลูกผสมและฉันก็ไม่แน่ใจว่าจะได้ประโยชน์อะไรจาก Tries และสิ่งที่คล้ายกัน แต่ฉันได้อ่านมาหลายครั้งแล้วว่ามันมีประสิทธิภาพมากสำหรับการทำเหมืองข้อความ ฉันต้องการรับความคิดเห็นเกี่ยวกับโครงสร้างข้อมูลที่ดีที่สุดที่จะใช้ในบริบทนี้และสิ่งที่ทำให้ดีกว่าที่อื่น หากฉันขาดโครงสร้างข้อมูลบางอย่างที่เหมาะสมกว่าสำหรับเครื่องตรวจการสะกดคำฉันก็สนใจเช่นกัน