Oldukça büyük bir sözlükle çalışması gereken bir yazım denetleyicisi yazmaya çalışıyorum. Hangi kelimelerin yanlış hecelenen kelimeye en yakın olduğunu belirlemek için Damerau-Levenshtein mesafesi kullanılarak kullanılmak üzere sözlük verilerimi endekslemek için etkili bir yol istiyorum .
Bana alan karmaşıklığı ile çalışma zamanı karmaşıklığı arasında en iyi uzlaşmayı sağlayacak bir veri yapısı arıyorum.
İnternette ne bulduğuma bağlı olarak, ne tür veri yapısını kullanacağımla ilgili birkaç ipucum var:
Trie
Bu benim ilk düşüncem ve uygulanması oldukça kolay görünüyor ve hızlı arama / yerleştirme sağlamalı. Damerau-Levenshtein kullanarak yaklaşık arama burada da uygulanması kolay olmalıdır. Ancak, alanların karmaşıklığı açısından çok verimli görünmüyor, çünkü büyük olasılıkla işaretçilerin depolandığı ek yüke sahipsiniz.
Patricia Trie
Bu, normal bir Trie'den daha az yer kaplıyor gibi görünüyor çünkü temel olarak işaretçileri saklama maliyetinden kaçınıyorsunuz, ancak sahip olduğum gibi çok büyük sözlükler söz konusu olduğunda veri parçalanması konusunda biraz endişeliyim.
Sonek Ağacı
Bundan emin değilim, bazı insanlar metin madenciliğinde faydalı buluyor gibi görünüyor, ancak bir yazım denetleyicisi için performans açısından ne vereceğinden emin değilim.
Üçlü Arama Ağacı
Bunlar oldukça hoş gözüküyor ve karmaşıklık açısından Patricia Tries'e yakın (daha iyi?) Olmalı, ancak Patricia Tries'den daha kötüsü olacaksa parçalanma konusunda emin değilim.
Burst Ağacı
Bu biraz melez görünüyor ve Deneme ve benzerlerine göre ne gibi bir avantaj sağlayacağından emin değilim, ancak metin madenciliği için çok verimli olduğunu defalarca okudum.
Bu bağlamda hangi veri yapısının en iyi şekilde kullanılacağına ve onu diğerlerinden daha iyi yapan ne olduğuna dair geri bildirim almak istiyorum. Yazım denetleyicisine daha uygun bazı veri yapılarını özlüyorum, ben de çok ilgileniyorum.