Ben PHP levenshtein function kullanarak dizeleri karşılaştırırken bazı başarı elde ettik.
Ancak, pozisyonları takas substrings içeren iki dizeleri için, algoritma yepyeni altdizgelerin gibi bu sayar.
Örneğin:
levenshtein("The quick brown fox", "brown quick The fox"); // 10 differences
sahip olarak kabul edilir less in common daha:
levenshtein("The quick brown fox", "The quiet swine flu"); // 9 differences
Ben first two daha çok benzer olduğunu gördüm bir algoritma tercih ederim.
Nasıl düzenlemeler için ayrı olarak pozisyon açtınız substrings belirleyebilir bir karşılaştırma fonksiyonu ile geliyor hakkında gidebiliriz?
Ben düşündüm, olası bir yaklaşım karşılaştırmadan önce, alfabetik içine dize tüm kelimeler koymaktır. Bu tamamen karşılaştırma dışarı kelimelerin orijinal sipariş alır. Bunun bir dezavantajı, ancak, kelimenin sadece ilk harfi değiştirilerek bir tek harf değiştirerek neden gerektiğini çok daha büyük bir kesinti oluşturabilirsiniz olmasıdır.
Ne elde etmek çalışıyorum ücretsiz metin dizeleri insanlar hakkında iki gerçekleri karşılaştırmak ve bu gerçekler aynı gerçeği göstermek için ne kadar büyük olasılıkla karar etmektir. Gerçekler Okul birisi, örneğin, işveren veya yayıncının adını katıldı olabilir. Iki kayıt aynı okul, farklı vb farklı bir sırayla kelimeleri, fazladan kelime, kılçıksız olabilir, bu yüzden eşleşen biz onlar aynı okula başvurmak iyi bir tahmin yapmak ise biraz bulanık olmalıdır. Yani-o kadar yazım hatalarını çok iyi çalışıyor (bu tüm üstüne metaphone benzer bir phoenetic algoritma kullanıyorum) ama çok kötü bir okulda ortak görünüyor etrafında kelimelerin sırasını geçerseniz: vs "xxx kolej" "xxx kolej".