Address parser

Fórumok

Sziasztok!

Egy elsőre blikkre triviális feladatra találtam egy használható megoldást, ami ha nem is 100%-osan, de megközelítőleg tökéletesen képes felbontani egy címet.
Az egyszerűség kedvéért vegyük a cím közterület részét.
A "Jedlik Ányos fasor 9. 7. emelet 18." stringet kellene felbontani a következő részekre:
- név
- jelleg
- házszám
- egyéb (az emelet-ajtóval most nem akarom bonyolítani a dolgot).

Kíváncsi vagyok, hogy erre tud-e valaki valami megoldást, vagy össze tudunk-e közösen hozni egy olyan megoldást, amely nagy mennyiségű minta mellett is 95% fölött teljesít.

Hozzászólások

/^(.*)\s+(fasor|utca|ut|ter|setany)\s+(\d+)(.*)/

$1 lesz a nev, $2 a jelleg, $3 a hazszam, $4 minden egyeb. A regexpben a kozepso reszt kiegeszited roviditesekkel (u\., stny\.?) meg ekezetes valtozatokkal, es meg is vagy kb.

--
|8]

Valóban nem, de a cél a legkifinomultabb megoldás megtalálása.
Abba már én is belefutottam, hogy a legelső szám nem mindig jó szeparátornak. Erre egy lehetséges workaround, hogy levizsgálod, hogy az első szám az legalább az 5. pozíción van és már 2 szóközön túl vagy.
Az elgépeléseken a fuzzy match lehet pl. segítségünkre, de azzal most nem akarom bonyolítani a témát. A sebesség nem fontos, nem realtime alkalmazás (hálistennek) :)
Az alapvető probléma az az, hogy a legtöbb formon a bekérésnél van egy 255 hosszú input a cím bekérésére és a felhasználó pedig azt ír be, amit akar. A legrosszabb, hogy be is írja :)

Ja, listához.
Beírtam gugliba, hogy közterület típus, az egyik hasznlható találat a 18. kerület egyik lapja (ott html forrásból ki lehet kukázni), illetve van egy ELTE-s szakdoga is, abban is van használható.

Rövidítés pedig szopó, ott fogsz még csodákat látni.

Ez első blikkre sem triviális. Egy ügyfélnél láttam a közterület jellegeket, kicsivel 100 (!) fölötti a darabszám, és ebben nincsenek benne a különféle rövidítések, nem beszélve a postafiókról sem. Sok ember megél abból, hogy adattisztítást végez cím- és egyéb adatokon...

--
joco voltam szevasz

abevjava-ban láthatod, mennyi közterületi jelleg van, + azok rövidítései + azok elírásai (pl ut, píhenő). good luck.

A legtöbb közterületnévben nincs szám, szóval az első számot használhatod szeparátornak.

"olyan megoldást, amely nagy mennyiségű minta mellett is 95% fölött teljesít."

Elméletileg igen, ha a sebesség nem fontos. Gyakorlatilag a félanalfabéták miatt a közterületek jellegének, és általában a címeknek az írásmódja intenzívebben mutálódik, mint bármelyik vírus.

Esetleg lehet szótárat használni.
Pl.: http://posta.hu/ugyfelszolgalat/iranyitoszam_kereso címről letölthetőek excelben a nagyvárosok utcanevei.

Persze az elgépeléseket gyűjteni kell külön, adott esetben javítást megfogalmazva rá (ha javítani is akarsz).

Hasonlóság mértékének mérésére javaslom a http://en.wikipedia.org/wiki/Levenshtein_distance függvényt. (Alul a See also fejezetben továbbiak is vannak)

A feladat meg nem triviális, ha javítani is akarsz, pláne nem. :)
Pl.:
Moszkva tér -> Széll Kálmán tér
Kossuth utca -> Kossuth Lajos / Kossuth Zsuzsanna
ZZZ u. -> csak ZZZ út és ZZZ köz van az adott helyen
Szent I. utca -> Szt. István, Szt. Imre
stb.