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]
Nem rossz, én is regexp-re gondoltam első nekifutásra. Jelentkezem, ha van result.
Köszi!
Annyival ki kell még egészíteni a patternt, hogy a házszám módosulhat 1/A stb. módokon. További problémát okozhat a házszámmal kapcsolatban az alsó/felső előtag.
Az nem volt az eredeti feladat resze, de azt beleirni mar nem olyan nehez szerintem.
A legnagyobb gond osszeszedni az osszevagyolando lista(ka)t.
--
|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 :)
CAPTCHA gyanánt is megteszi: ha a bemenet 100%-ig illeszkedik egy hivatalos címjegyzék egy rekordjával ÉS maradéktalanul megfelel a magyar helyesírás szabályainak, akkor jó eséllyel robot.
+1 :D
--
joco voltam szevasz
lol :D
továbbá: u., stny., útja, sugárút, sgt., körút, krt., körtér, sor, rakpart, park, liget
Ezek már megvannak :) Még a rövidítéseket kell összeszednem :)
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
itt egy lista a lehetséges közterületi jellegekről, aki ezekre + ezek rövidítéseire és elütéseire regexp-et ír, az... meg is érdemli
Tegyük hozzá, hogy az én lakcímem (Nagykert 28) kilóg minden sorból, mert se nem utca, se nem kert, se nem... semmi. Csak Nagykert.
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.
Október 6. u. 9.
32-esek tere
56-osok tere
:)
legtöbb != mind
"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.