2013-09-03 2 views
5

biz bu denklemi kullanmak Bu denklemde iki dizge için "m"?Jaro Winkler mesafede "m" nasıl hesaplanır?</p> <p>Nasıl hesaplamak gerekir</p> <p>dj = 1/3 (| s1 | + m/| | s2 + (mt)/m m /): İki dizesinin Jaro mesafe hesaplama için

İki dizge arasındaki fark "m" ise, neden "MARTHA" ve "MARHTA" dizesi için Wikipedia örneğidir, m 6'dır. Sanırım 1 olması gerekir, çünkü dizeler arasındaki fark 1 değil 6! Ben haklı mıyım

+2

m durumunuzda 6 olan iki dizge arasındaki eşleşen karakter sayısıdır. – rakeshjain

+0

Wikipedia'nın örneği (http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Example) harika bir iş çıkarır Tam problemin üzerinden yürümek, yani asıl sorun nedir? – AndyG

+0

@ AndyG: Nasıl hesaplayacağımı anlayamıyorum m ve t! Vikipedi'nin örneğinde, "MARTHA" ve "MARHTA" için, m = 6, tüm aynı karakterleri ifade eder, ancak "CRATE" ve "TRACE" için, m = 3, yani aynı sıradaki tüm aynı karakterler anlamına gelir. "MARTHA" ve "MARHTA", m 4 olmalı, çünkü T ve H iki dizede aynı sırayla değil! –

cevap

7

m, konumlarına bakılmaksızın iki dizenin arasında paylaşılan karakterlerin sayısıdır ve bunların uzaklığı d = floor(max(len(String1), len(String2))/2) - 1 (teşekkürler Michael Foukarakis) 'den daha uzak değildir. Bu, MARTHA ve MARHTA için 6'dır.

t Bu durumda 2 ile bölünmesiyle paylaşılan fakat farklı konumlarında bir karakter, sayısıdır, 2 karakter (H ve T) ortak fakat farklı pozisyonlarda çok t = 2/2 = 1 halindedirler.

+5

Tamamen doğru değil - iki karakter sadece aynı ve daha yakın değillerse, d = kat (max (len (String1), len (String2))/2) - 1'. –

+0

tamam, ancak burada farklı bir şekilde hesaplanmış m ve t, "CRATE" ve "TRACE" için söylediğiniz gibi, m 5 olmalıdır, çünkü tüm karakterler iki dizge arasında paylaşılır, ancak m = 3! Nedenini bilmiyorum? ve t 1 (C ve T) olmalı ama t = 0 olmalı! benim için açıklayabilir misin lütfen? –

+0

@MichaelFoukarakis Teşekkürler, düzeltildi. – Bitwise