Jakub L.

Jakub L. Programista

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Dawno temu coś takiego robiłem i zmieniłem pracę, więc nie podam ci gotowego rozwiązania.
Napisałem to sam, perlowy skrypt który brał adres wpisany strumieniem świadomości, czyli ulica 1/2a albo ulica 1m2a albo ulica 1 m.2a albo jeszcze inne cuda jakie przyszły do głowy osobie wpisującej lub dostarczającej dane i wyłapywał z tego numer klatki i domu.
Po kilkukrotnym przerzeźbieniu regexpa (w testach możliwe że zrzucałem te adresy które się nie zmaczowały, dawno to było) miał skuteczność sporo powyżej 95% która mnie usatysfakcjonowała - adresy których nie udało się zmaczować zostały wpisane na pałę w pole ulica, i potem poprawione przez osoby które się tym zajmowały. Nie było narzekania, bo te osoby miały przed oczami przepisanie wszystkiego ręcznie, a tak to tylko zostały przypadki szczególne.
Paweł K.

Paweł K. Front-end web
developer

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Rozwiązanie wydawałoby się być banalnie proste, logiczne, oczywiste, ale nikt go nie przedstawił, więc chyba nie o to chodzi. Przedstawię je jednak ot tak :)

Wychodzę z założenia, że osoba podająca dane w jakikolwiek sposób oddzieliła skrót ul od nazwy ulicy na przykład:

ul Janka Krasickiego
ul Małgorzaty Fornalskiej
Ul generała Władysława Sikorskiego
ul.Wiktora Białego
ul. 22 Lipca
uL:Juliana Marchlewskiego
ul: Piusa XI
ul; Lądowa
ul;bpa Władysława Bandurskiego

mamy też numer domu i mieszkania, więc tak:

ul. 22 Lipca 15 m. 32
ul. 22 Lipca 1501 m 324
ul. 22 Lipca 1 m3
ul. 22 Lipca 32/3025
ul. 22 Lipca 32h m 3025
ul. 22 Lipca 32b m 3025
ul. 22 Lipca 32 M. 3025
ul. 22 Lipca 775

więc możemy przejechac od tyłu aż do literki m w jakiejkowiek postaci, lub "/", numer mieszkania mamy już w nowej tabeli->kolumnie->polu

nie widziałem jeszcze, żeby ktoś mieszkał w domu aznaczonym numer+m (np ul Żeromskiego 17m m 15)

skoro mamy już adresy w takiej postaci:

ul. 22 Lipca 15
ul. 22 Lipca 1501
ul. 22 Lipca 1 m
ul. 22 Lipca 32
ul. 22 Lipca 32h
ul. 22 Lipca 32b
ul. 22 Lipca 32
ul. 22 Lipca 775

spacja powinna pójść szybko, i mamy w zasadzie wszystko

pozostałe rekordy ręcznie

źle kombinuje ?

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Dobrze, brawo, ale przeczytaj moją pierwszą wypowiedź w wątku.

Co np. z adresami:
"krasińskiego 35"
"al krasińskiego 35" (jest jeszcze "skwer", "róg", "ws-wioska"...)

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

kiedys sie w tym babrałem i doliczyliśmy się ponad 50 możliwości zapisania adresu na alei M. Cure-Skłodowskiej
Paweł K.

Paweł K. Front-end web
developer

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Piotr Likus:
Dobrze, brawo, ale przeczytaj moją pierwszą wypowiedź w wątku.

Co np. z adresami:
"krasińskiego 35"
"al krasińskiego 35" (jest jeszcze "skwer", "róg", "ws-wioska"...)

jeżeli nie ma M, m, m. etc. to lecisz nazwa ulicy - numer domu

jeżeli jest to lecisz manualnie ;)
Piotr Krajewski

Piotr Krajewski STERMEDIA IT
outsourcing Sp. z
o.o., Centrum
Analizy Danych

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Wg nas najważniejsze w tym zadaniu jest ustandaryzowanie danych.

W przypadku danych adresowych narzędzia jakich używamy to m.in:
1) Pełna baza SQLowa z całym pakietem funkcji. Najważniejsze to
napisanie funkcji Levensthein (porównanie dwóch wyrazów), żeby
weryfikować dane adresowe.
2) Pakiet Office (Excel + Access)
3) Narzędzie do geokodowania, które ma jedną podstawową zaletę ma
najlepszy słownik.
4) Edycja manualna, gdy będzie taka potrzeba.

Trudno określić jaki będzie wynik nie widząc danych na wejściu, ale
przy błędzie wyrazów (ulic, miast, kodów pocztowych(?) ) na poziomie
30%/40% gwarantujemy poprawność danych na poziomie ok 98-99% na wyjściu. Oczywiście wynikiem będzie dostarczenie danych w ustandaryzowanej formie.

W razie pytań służę pomocą
-------
pozdrawiam
Piotr Krajewski
kom. (+48) 694 233 234
email. pkrajewski@dcad.com.pl

Dolnośląskie Centrum Analizy Danych
Parkowa 13
51-616 Wrocław
http://dcad.com.pl

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Piotr podsunął świetny pomysł. Dlaczego nie skorzystać z googlemaps api?

1) Po wstępnym czyszczeniu danych z numeru mieszkania/klatki/drzwi/itp. wrzucamy dane do googlemaps oraz dla bezpieczeństwa do targeo (dla warunków polskich jest bardzo dobra i chyba ma inne dane). Targeo nie ma chyba api ale kod do wyciągania wyników za pomocą regexp zajmie nie więcej niż 2h pracy amatora.

2) Powyższe mapy zwrócą poprawny adres słownikowy, który będzie trzeba rozdzielić na części pierwsze kolejnym wyrażeniem regularnym.

3) Podczas każdego z tych punktów należy rejestrować odchylenia surowych danych od propozycji googlemaps/targeo, a te które są znacznie inne rejestrować.

Podobną rzecz robiłem kiedyś aby zmapować indeksy magazynowe mojego klienta z ofertami konkurencji. Na produkcyjnym systemie błąd wynosi około 10% (źle przypisany indeks) ale dzięki innym walidacjom można go jakoś zneutralizować.Paweł Jędrasiewicz edytował(a) ten post dnia 09.12.10 o godzinie 10:48

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Paweł Jędrasiewicz:
Piotr podsunął świetny pomysł. Dlaczego nie skorzystać z googlemaps api?

1) Po wstępnym czyszczeniu danych z numeru mieszkania/klatki/drzwi/itp. wrzucamy dane do googlemaps oraz dla bezpieczeństwa do targeo (dla warunków polskich jest bardzo dobra i chyba ma inne dane). Targeo nie ma chyba api ale kod do wyciągania wyników za pomocą regexp zajmie nie więcej niż 2h pracy amatora.

2) Powyższe mapy zwrócą poprawny adres słownikowy, który będzie trzeba rozdzielić na części pierwsze kolejnym wyrażeniem regularnym.

3) Podczas każdego z tych punktów należy rejestrować odchylenia surowych danych od propozycji googlemaps/targeo, a te które są znacznie inne rejestrować.

Podobną rzecz robiłem kiedyś aby zmapować indeksy magazynowe mojego klienta z ofertami konkurencji. Na produkcyjnym systemie błąd wynosi około 10% (źle przypisany indeks) ale dzięki innym walidacjom można go jakoś zneutralizować.Paweł Jędrasiewicz edytował(a) ten post dnia 09.12.10 o godzinie 10:48
Myślę że autor rozwiązał już problem w ciągu dwóch lat.

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Tomek P.:
Myślę że autor rozwiązał już problem w ciągu dwóch lat.

Racja :))

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Piotr Krajewski:
3) Narzędzie do geokodowania, które ma jedną podstawową zaletę ma
najlepszy słownik.
Pomijając to ze watek trochę starawy to myślę że jedna słownik tery (http://www.stat.gov.pl/bip/36_PLK_HTML.htm) jest lepszym źródłem informacji.
Paweł W.

Paweł W. java developer at
https://rozwoj-oprog
ramowania.pl

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Paweł Jędrasiewicz:
Tomek P.:

Myślę że autor rozwiązał już problem w ciągu dwóch lat.

Racja :))

zgadza sie, jakos to wtedy rozwiazalem i juz nawet nie jestem pewny co ja tam wtedy zrobilem..;)
Łukasz Senkowski

Łukasz Senkowski Kierownik ds.
Wsparcia Sprzedaży,
JTI

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Witam
Chyba nikt o to nie zapytał wcześniej: do czego potrzebujesz tych danych? Pytam, bo w zależności od celu masz kilka możliwości. Jeśli jest to duża baza, powiedzmy ponad 100 tys rekordów i nie ma żadnego wzorca dla tych danych to przekonaj firmę by zlecić to zewnętrznie. Są firmy, które naprawde dośc dobrze umieją to zrobić. Nie będę podawał nazw by nie posądzono mnie o kryptoreklamę. Sam sie wykończysz i poszukasz nowej pracy, wierz mi, bo już kilku takich widziałem. Jeśli masz mniejszą bazę, która nie narasta zbyt mocno o nowe rekordy to możesz pomęczyć się sam: makra, filtry, słowniki. Jest to dość trudna i skomplikowana operacja, a i tak w 100% nie zrobisz tego dobrze, jeśli nie chcesz tego robić ręcznie.
Paweł W.

Paweł W. java developer at
https://rozwoj-oprog
ramowania.pl

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Łukasz Senkowski:
Witam
Chyba nikt o to nie zapytał wcześniej: do czego potrzebujesz tych danych? Pytam, bo w zależności od celu masz kilka możliwości. Jeśli jest to duża baza, powiedzmy ponad 100 tys rekordów i nie ma żadnego wzorca dla tych danych to przekonaj firmę by zlecić to zewnętrznie. Są firmy, które naprawde dośc dobrze umieją to zrobić. Nie będę podawał nazw by nie posądzono mnie o kryptoreklamę. Sam sie wykończysz i poszukasz nowej pracy, wierz mi, bo już kilku takich widziałem. Jeśli masz mniejszą bazę, która nie narasta zbyt mocno o nowe rekordy to możesz pomęczyć się sam: makra, filtry, słowniki. Jest to dość trudna i skomplikowana operacja, a i tak w 100% nie zrobisz tego dobrze, jeśli nie chcesz tego robić ręcznie.

najlepszy jest tekst z tym, ze sie wykoncze, heh dobre;) czy ja wygladam na wykonczonego?? Ten watek i ludzie ktorzy tu pisza sa po to, ze sami rozwiazujemy takie problemy, a nie pytamy czy mozna je zlecic jakiejs firmie!
Wiec dziekuje za bezsensowne rady.
Poza tym prosze sobie najpierw przeczytac caly watek zanim sie napisze bzdury.

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Ja takiego narzędzia nie znam, ja bym nie szukał gotowca tylko wykorzystał (Jesli to Oracle) funkcje "instr" zaszył do kursora i wrzucił do innej tabeli w postaci kilku kolumn. AAA sorrka chyba cię oszukałem jest coś takiego w TOAD jak Import|SQL Wizard|SQL loader i tam można sobie również ustawiać algorytm pobierania danych z jednego pola jako zakres danych. Pewnie to by ci wystarczyłoJakub Suchocki edytował(a) ten post dnia 13.01.11 o godzinie 14:02

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Łukasz Senkowski:
Witam
Chyba nikt o to nie zapytał wcześniej: do czego potrzebujesz tych danych? Pytam, bo w zależności od celu masz kilka możliwości. Jeśli jest to duża baza, powiedzmy ponad 100 tys rekordów i nie ma żadnego wzorca dla tych danych to przekonaj firmę by zlecić to zewnętrznie. Są firmy, które naprawde dośc dobrze umieją to zrobić. Nie będę podawał nazw by nie posądzono mnie o kryptoreklamę. Sam sie wykończysz i poszukasz nowej pracy, wierz mi, bo już kilku takich widziałem. Jeśli masz mniejszą bazę, która nie narasta zbyt mocno o nowe rekordy to możesz pomęczyć się sam: makra, filtry, słowniki. Jest to dość trudna i skomplikowana operacja, a i tak w 100% nie zrobisz tego dobrze, jeśli nie chcesz tego robić ręcznie.


Roboty na góra 30 minut a firma z zewnatrz skasuje za to krocie

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Jakub Suchocki:
Łukasz Senkowski:
Witam
Chyba nikt o to nie zapytał wcześniej: do czego potrzebujesz tych danych? Pytam, bo w zależności od celu masz kilka możliwości. Jeśli jest to duża baza, powiedzmy ponad 100 tys rekordów i nie ma żadnego wzorca dla tych danych to przekonaj firmę by zlecić to zewnętrznie. Są firmy, które naprawde dośc dobrze umieją to zrobić. Nie będę podawał nazw by nie posądzono mnie o kryptoreklamę. Sam sie wykończysz i poszukasz nowej pracy, wierz mi, bo już kilku takich widziałem. Jeśli masz mniejszą bazę, która nie narasta zbyt mocno o nowe rekordy to możesz pomęczyć się sam: makra, filtry, słowniki. Jest to dość trudna i skomplikowana operacja, a i tak w 100% nie zrobisz tego dobrze, jeśli nie chcesz tego robić ręcznie.


Roboty na góra 30 minut a firma z zewnatrz skasuje za to krocie

bzdury waść opowiadasz takie że aż zęby bolą

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Przemysław R.:
Jakub Suchocki:
Łukasz Senkowski:
Witam
Chyba nikt o to nie zapytał wcześniej: do czego potrzebujesz tych danych? Pytam, bo w zależności od celu masz kilka możliwości. Jeśli jest to duża baza, powiedzmy ponad 100 tys rekordów i nie ma żadnego wzorca dla tych danych to przekonaj firmę by zlecić to zewnętrznie. Są firmy, które naprawde dośc dobrze umieją to zrobić. Nie będę podawał nazw by nie posądzono mnie o kryptoreklamę. Sam sie wykończysz i poszukasz nowej pracy, wierz mi, bo już kilku takich widziałem. Jeśli masz mniejszą bazę, która nie narasta zbyt mocno o nowe rekordy to możesz pomęczyć się sam: makra, filtry, słowniki. Jest to dość trudna i skomplikowana operacja, a i tak w 100% nie zrobisz tego dobrze, jeśli nie chcesz tego robić ręcznie.


Roboty na góra 30 minut a firma z zewnatrz skasuje za to krocie

bzdury waść opowiadasz takie że aż zęby bolą


jezeli mam jedną kolumne w której są dane i chcę je rozdzielić na 3 kolumny to.
1. kolumna - adres z kolumny funkcja instr
2. kolumna - np: numer domu
3. kolumna - kod pocztowy

problem byłby jedynie wtedy gdy odpowiednie informacje bedą ze sobą połączone ale i to mozna zrobić samemu.
i w czym się tu zastanawiać zwykła konwersja danych.Jakub Suchocki edytował(a) ten post dnia 13.01.11 o godzinie 14:18

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Jakub L.:
Dawno temu coś takiego robiłem i zmieniłem pracę, więc nie podam ci gotowego rozwiązania.
Napisałem to sam, perlowy skrypt który brał adres wpisany strumieniem świadomości, czyli ulica 1/2a albo ulica 1m2a albo ulica 1 m.2a albo jeszcze inne cuda jakie przyszły do głowy osobie wpisującej lub dostarczającej dane i wyłapywał z tego numer klatki i domu.

Dokładnie, coś takiego da się zrobić. Zajmowałem się podobnymi problemami i uzyskanie algorytmu działającego w 95% przypadków jest możliwe. Algorytm nie był trywialny, ale nie był też jakiś bardzo skomplikowany. Grunt to usiąść i napisać odpowiedni algorytm. A nie szukać narzędzi i firm trzecich...

W moim przypadku algorytm polegał na splicie, analizie tekstu + parę regexpów, ale jeśli ktoś lubi, może użyć do tego celu nawet sieci neuronowej. Parę godzin nauki takiej sieci na realnych przypadkach i sądzę, że można przebić 95% skuteczności...

Ale ludzie teraz nie uczą się algorytmów, wolą szukać firm trzecich za grubą $$$. ;)

Rozwiązanie z użyciem google maps API też jest jakimś sposobem, ale oni się zabezpieczają - więcej niż N requestów z jednego IP nie zrobisz, więc jeśli masz parę mln rekordów w bazie, to nici z tego wyjdą...Adam Michalski edytował(a) ten post dnia 13.01.11 o godzinie 14:27

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Adam Michalski:
Jakub L.:
Dawno temu coś takiego robiłem i zmieniłem pracę, więc nie podam ci gotowego rozwiązania.
Napisałem to sam, perlowy skrypt który brał adres wpisany strumieniem świadomości, czyli ulica 1/2a albo ulica 1m2a albo ulica 1 m.2a albo jeszcze inne cuda jakie przyszły do głowy osobie wpisującej lub dostarczającej dane i wyłapywał z tego numer klatki i domu.

Dokładnie, coś takiego da się zrobić. Zajmowałem się podobnymi problemami i uzyskanie algorytmu działającego w 95% przypadków jest możliwe. Algorytm nie był trywialny, ale nie był też jakiś bardzo skomplikowany. Grunt to usiąść i napisać odpowiedni algorytm. A nie szukać narzędzi i firm trzecich...

Również coś takiego robiłem i jezeli chcesz jakiś przykład to zapraszm na prv.

konto usunięte

Temat: rozdzielenie danych adresowych z jednego pola do trzech

Jakub Suchocki:
Adam Michalski:
Jakub L.:
Dawno temu coś takiego robiłem i zmieniłem pracę, więc nie podam ci gotowego rozwiązania.
Napisałem to sam, perlowy skrypt który brał adres wpisany strumieniem świadomości, czyli ulica 1/2a albo ulica 1m2a albo ulica 1 m.2a albo jeszcze inne cuda jakie przyszły do głowy osobie wpisującej lub dostarczającej dane i wyłapywał z tego numer klatki i domu.

Dokładnie, coś takiego da się zrobić. Zajmowałem się podobnymi problemami i uzyskanie algorytmu działającego w 95% przypadków jest możliwe. Algorytm nie był trywialny, ale nie był też jakiś bardzo skomplikowany. Grunt to usiąść i napisać odpowiedni algorytm. A nie szukać narzędzi i firm trzecich...

Również coś takiego robiłem i jezeli chcesz jakiś przykład to zapraszm na prv. Jedyną kwestią jest to jak "poukładane" są dane.

Następna dyskusja:

Procedura przeniesienia baz...




Wyślij zaproszenie do