Dizeleri ve Algoritmalar Eşleme
Bir arama motoru ve anahtar kelime türü, ne motor yapar ne bakmasını biliyor mu? Bile bir kelime, yine de sonuçlar geri, bazen değil gelmek yanlış olduğunu nasıl, ancak çoğu zaman oldukça yakındır. Nasıl bu arama motorlarının veritabanı öğeleri ve dönüş sonucu ile giriş karşılaştırın var?
Katar benzerlik olarak ilgim iyi kullanıcı arayüz tasarımı için bir arzusundan kaynaklanıyor. Bilgisayar görebileceği düşmanca, affetmez hayvanlar bu unkindly bu unspecific vardır isteklerine yanıt olarak çok. Bu yazıda ben nasıl daha fazla kullanıcılarının hata affedilmesiyle için programlanmış olabilir, kullanıcı üzerinde hiçbir ek yük ile böyle özel bir sorgu öğrenme biçimi olarak gösteriyor. Ayrıca, anlatılan teknikleri çok yaygın uygulanan ve çoğu zaman uygulamak kolaydır.
Her ne kadar benim ilgi kullanıcı bir arayüz, bu tek yer bu teknikler istihdam edilebilir değildir. Örneğin, Hamming mesafesi (daha sonra) geleneksel düşük geri düzey bit aktarım hataları elektronik iletişimde kullanılan nitelendirdi. Gelecekte, ben bazı teknikler bağımsız bilgisayar programları (akıllı ajanlar olarak) başka bir ajan ’söylediğini anlaması için deneyin hareket arasında iletişimin yardım için kullanılan olabilir inanıyoruz. Ama şimdilik, seni bu beklenen bir giriş veya bilinen bir ‘beklenmedik giriş dizesi realigning ve geçerli gibi düşünmek, bir kullanıcının bağlamında istiyoruz arayüzü.
Bana biraz daha somut olsun. Ne zaman Amazon.com bir kitap için giriş bilinen ürünleri veritabanında yapılan açıklamaları karşı olduğunu aramak için bir arama dizesini girin. Oldukça bu girişi tam olarak (yani, herhangi bir ‘bekleniyor girdi eşleşmiyor olasılıkla kitap başlıkları veya yazar) veritabanında. Örneğin string ‘Web Veri Tabanı Uygulamaları’, bu başlığı ‘PHP ve MySQL’ olmasına rağmen, tam eşleme değildir Web Veri Tabanı Uygulamaları ile kitabın geri arama isterseniz girin. Ve aynı kitap listelenir eğer girilen PHP Web Uygulamaları ‘, hatta yanlış’ görmek için bekliyor olabilir. Görevi bu durumda ürün tanıtımları ve beklenen katar (de) benzer ya da belki de en benzer, kullanıcı girişi için bulmaktır. İşte algoritmalar iki ana sınıfları dize benzerlik, denklik yöntemleri ve benzerlik sıralama yöntemleri eşleme içindir.
Eşdeğerlik Yöntemleri
Eşdeğerlik yöntemleri iki dizeleri karşılaştırın ve doğru veya yanlış için herhangi bir yöntem olarak, bir anlamda, eşdeğer bu iki dizeleri gördüğü göre bir değer dönecektir. Daha fazla kullanıcı girdi affedilmesiyle olabilir kullanıcı açısından arayüz tasarımı, sizin uygulamasında yalnızca tam eşleme yerine eşdeğer dizeleri kabul eder.
Word doğan bir temel kanonik formu veya ‘yakından ilgili bir deyişle azaltan bir tekniktir kök’. Örneğin, kullanıcı girişleri ‘dönüyor’ ve ‘yüzme’ temel kök ‘için yüzmek’ bekleniyor girişlerine karşı tam eşleme yaparak önce azaltılabilir. Doğan kullanan bir mümkün kelime sonları listeleri içeren sözlük soneki. Ancak, böyle bir liste açıkça dile bağımlı ve aynı dili olarak kabul edilmelidir bile bölgesel farklılıklar (örneğin,) Amerikan yazım ‘ile İngiliz yazım’ standart ’standart’ karşılaştırın. Ancak bunun çoğu Hint-Avrupa dil ailesi için göstermiş oldu da, tüm diller bu tedavi için, kendilerini etmek (ki Latince içerir ve Alman dil tabanlı). Doğan algoritmaları kaynaklanan bir güç, zaman alan ve hata eğilimli etkinliği. Bu nedenle, uygulama oluşturma, sadece Kartopu gibi araçlar kullanarak, bir çok dilde mevcut doğan algoritmaları kendi yazılımı ile tavsiye ederim.
Eş anlamlı
Bu yaklaşımda, beklenen girdi eş anlamlı açıkça saklanır. Örneğin, string ‘televizyon’, ayrıca ‘TV’ ve ‘televizyon’ saklamak olabilir ve string ‘lisans’ ile de olabilir saklamak’ lisans’. Kelime, kullanıcı girişleri bir kanonik formu için herhangi bir işlem önce çevrilir doğan gibi.
Bu mekanizma, bir affedilmesiyle kullanıcı arabirimi sağlar ve aynı zamanda dil bağımsızdır. Ne yazık ki, bu çok eş anlamlı dizeleri önceden her türlü kullanıcı girişi tahmin etmeye hazır olmalıdır demek. Bu yaklaşım sadece beklenen girdilerin sayısı yerine sağlayarak daha iyi bir algoritma gerçek faiz olan dizeleri bulmak için artış iddia olabilir. Ancak, bir veritabanından ürün tanıtımları almak ve sorunu yeniden, o başka avantajları görmeniz gerekir. İlk olarak eş anlamlı yakın kullanıcıya çözümü-arayüzü sistemin geri sonunda, you can endekslemek ürünleri küçük, kontrollü anahtar kelime kelime kullanarak. İkincisi, mimarisi bu kullanıcı arayüzü endişeleri ve veri bütünlüğü arasında temiz bir ayrım sağlar.
Düzenli İfadeler
Sabit diskte bir dosya aradığınız zaman, bir joker ile ‘*. txt gibi’ bir soneki ‘. Txt’ ile (bir şey) gibi bir arama deseni kullanabilirsiniz. Benzer bir şekilde, uygulamalar da desen ilgi bilgi bulma şansını artırmak için eşleme kullanır bilgiler alımını gerçekleştirmek. Bir yaklaşım kullanıcı normal ifadeler, tüm güç arayüzü maruz, ama daha da yardımcı olan karmaşık fonksiyonel ve şifreli sözdizimi genellikle daha kafasını karıştıracaktır. İhtiyacımız bir model bu arama çalışmalarını sürdürür güç kullanım için ifşa olmadan eşleme. Bir fikir prepend ve vahşi kart karakteri ile kullanıcı girişi ekleyin ve sonra normal ifade yerine tam eşleme eşleme kullanın. Bu, tüm dizileri için kullanıcı girişi içeren arama etkisi vardır. Diğer bir fikir, her kelime için (yani, uzay-is simge) giriş ayrılmış ve aynı vahşi kart prepending ve eklenmesiyle geçerlidir. Bu durumda, giriş ” * * * balık * ‘olan’ gibi ‘gitti balıkçılık eşlemeler git olacak balık git balıkçılık.
Benzerlik Sıralama Yöntemleri
Benzerlik sıralama yöntemleri dizeleri bir dizi için bir katar karşılaştırma ve bu dizeleri derecelerle benzerlik sırası. Bir sıralama, bu bir maç bir daha iyi olduğunu söyleyerek bir şekilde ihtiyacı üretmek için. Bu her karşılaştırma sonucu olarak benzerlik bir sayısal ölçmek dönen yapılır. Alternatif olarak, iki dizeleri arasındaki mesafe, onların benzerlik yerine düşünebilirsiniz. Dizeleri arasında var düşük benzerlik büyük bir mesafe ile, tam tersi.
Uzaklık Düzenle
Bu yöntem en yaygın yazım hataları, yani karakter eksiklikler, insertions, değiştirmelerin ve reversals odaklanır. Bu düşünce, başka bir bir dize çevirmek için alacak bu operasyonların minimum numarası hesaplama etmektir. Bu sayı dizileri ve benzerlikler bir göstergesi verir. 0 değeri, iki dizeleri gösterir aynı
Algoritmanın daha genel olarak her operasyonları ile maliyet ilişkiyi tarafından açıklanacak ve başka bir bir dize dönüşümleri minimum maliyet olarak iki dizeleri arasındaki mesafenin kaynaklanan. Bu mesafe düzenlemek iki yaygın tanınan çeşitleri vardır. Bu Levenshtein Düzenle Uzaklık en yaygın varyasyon ve ekleme, silme veya tek bir karakteri ikame her bir işlemin maliyeti 1 sağlar.
Sonuç
Birçok bilgi alma sistemleri kullanım ilgilendiren bilgileri bulmak için sorgu, genellikle sadece tek bir dize, bir dize tabanlı kullanın. Sistemin kabiliyeti ilgili bilgileri kullanıcı girişi başarılı bir sistem anahtarı dayalı bulabilirsiniz. Kadar hiçbir tam eşleme mevcut bilinen bu yeteneğini önemli ölçüde yaklaşık bir dizi algoritma eşleme iş (bu çağrılmış olması gerekmez) gelişmiş olabilir. Tersine, başarısızlık ilgili bilgileri bulmak için (özellikle kullanıcı bu olması kadar) bilir sadece önlemek için, hizmet ve huysuz bilgisayarın miti devam.
İki sınıf: denklik yöntemleri ve benzerlik sıralama yöntemleri ve algoritmalar nitelendirdi. Oysa bu benzerlik sıralama yöntemleri sayısal bir benzerlik ölçmek veya mesafe ölçümü geri Eşdeğerlik yöntemleri, bir Boole sonucu iade edin. Bilgi alma sistemleri olarak, daha hızlı bir melez bir yaklaşım üretmek için yöntemler karması mümkündür. Tipik bir yaklaşım işe bir iki hangi bir denklik yöntemi ilk geçirgen filtre olarak veritabanı tarafından kullanılan mekanizma geçmek ve bir sıralamaya benzerlik yöntemi ikinci geçmek için filtre girişlerini uygulanır. Ranked benzerlik yöntemleri algorithmically daha denklik yöntemleri daha karmaşık olması için, genellikle özel kod olarak veritabanı dışında uygulanmaktadır eğilimindedir.
Ne zaman kullanmak için bir algoritma seçerek, bu algoritma Istediğiniz etkiler çeşitli kriterleri vardır. Örneğin, uyuşmazlık tür sizden kurtarmak için ne çalışıyorsunuz? Size hataları den kurtarmak için çalışıyorsun? Ya da ’ses aynı veya benzer dizeleri bulmak istiyoruz? Sistem hep aynı dili konuşan bir kullanıcı veya yöntemi bu dili bağımsız olması gerekir? Sonuçları benzerlik sırasına göre sıralanır olmam gerekiyor mu? Kaç dizeleri algoritmanın karşılaştırmak, ve ne kadar hızlı çalıştırmak gerekir? Bir iki mekanizma uygun veya gerekli geçmek?
Son olarak, bu bilgi ve bu alanda çok iyi, en iyi algoritmaları zaten bulundu bilinen iyi-keşfedilmekte edilmiştir hayal olabilir. Ancak, hala bir araştırma alanı ve ben de hiç olmaz Google bu takım romanı yaklaşık dize üzerinde çalıştıklarını sağ artık algoritmalar eşleme şaşırttı! |