Belirli bir dizenin dizeler koleksiyonuna ne kadar benzediğini belirleme


10

Bu sorunun buraya ait olup olmadığından emin değilim ve özür dilerim. Ne yapmak için ben muhtemelen belirli bir dize dizeleri bir çanta içinde "ait" olup olmadığını belirleyebilir programatik bir yol geliştirmektir. Örneğin, 10.000 ABD şehir adından oluşan bir çantam varsa ve sonra "Philadelphia" ibarem varsa, 'Philadelphia'nın zaten bildiğim ABD şehir adlarını temel alan bir ABD şehir adı olması konusunda niceliksel bir ölçüm istiyorum. Bu bağlamda gerçek şehir isimlerini sahte şehir isimlerinden ayıramayacağımı bilsem de, en azından "123.75" ve "Hızlı kızıl tilki tembel kahverengi köpeklerin üzerinden atladı" gibi dizeler olmasını beklerdim bazı eşik.

Başlamak için Levenshtein Mesafesine baktım ve bunun en azından çözmeye çalıştığım soruna benzer şekilde sorunlara nasıl uygulandığına biraz baktım. Bulduğum ilginç bir uygulama intihal tespiti, Levenshtein mesafesinin değiştirilmiş bir Smith-Waterman algoritması ile nasıl kullanıldığını açıklayan bir makaleyle belirli bir temel kağıdın plagarize edilmiş bir versiyonuna göre kağıtları puanlamaktı. Sorum şu ki, birisi bana yardımcı olabilecek diğer yerleşik algoritmalar veya metodolojilerle beni doğru yönde gösterebilir mi? Bunun geçmişte birisinin çözmeye çalıştığı bir sorun olabileceğini hissediyorum ama şimdiye kadar Google-fu'm başarısız oldu.


Olumlu ve olumsuz örnekleriniz varsa, bir sınıflandırıcı eğitmeye çalışabilirsiniz. Özellikler için, başlamak için Yuval Filmus tarafından önerilenler gibi bazı basit istatistikleri çekmeyi denerdim.
Nick


Şehir isimleri kötü bir örnek gibi görünüyor; özellikle ABD'de her yerdeler. Burada, tablo aramanın en etkili yol olduğu görülmektedir. Sorununuz daha genel mi?
Raphael

Yanıtlar:


5

Düşünülmesi gereken bazı daha iyi istatistikler kelime uzunluğu ve gram analizidir. Kelime uzunluğu için, şehir adlarının kelime uzunluğunun dağılımının istatistiklerini toplayabilir ve elde ettiğiniz uzunluk ile karşılaştırabilirsiniz. n -gram analizi , örnek metninizdeki n harf dizilerinin dağılımına bakar (örneğin n = 2 ). Her iki yaklaşım da birleştirilebilir.nnnn=2

Buluşsal yöntem göz önüne alındığında, örnek verileriniz için diğer metinden daha yüksek (umarım) bir puan almak için olasılık kullanabilirsiniz . Makul bir eşik belirlemek için çapraz doğrulama yapabilirsiniz. Şehir adı olmayan bir dizi örnek kelime öbeği seçin . Şehir adlarını büyük (% 80 diyelim) ve küçük (% 20 diyelim) olmak üzere iki bölüme ayırın. Modelinizi büyük kısımda eğitin (yani, büyük kısımda istatistik toplayın) ve ardından modelinizi küçük kısımda ve kötü ifadelerin örneğinde değerlendirin. Çoğu şehir adından geçen makul bir eşik olup olmadığını, ancak sadece az miktarda kötü kelime öbeği olup olmadığını belirleyin.


Teşekkürler. N-gram'a bakmaya başlamıştım ama tamamen üssü olup olmadığımı bilmiyordum, bu yüzden bahsettiğinize sevindim. Kelime uzunluğu da ilginç geliyor ve hiç düşünmediğim bir şey.
Andrew

Buna karakter sıklığı eklemek isteyebilirsiniz. Özellikle, bu tüm sayısız şeylerden kurtulmalıdır. Bir avantaj, bu tür frekansların, bir takım istatistiksel modellerde eğitilebilen / tanınabilen sayı vektörleri olmasıdır.
Raphael

1
1n+1n
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.