Koreksi / Sumber Alamat Terbuka dengan Pencocokan Fuzzy

8

Berikut adalah sedikit pertanyaan terperinci terkait dengan alamat parsing / geocoding yang menurut saya harus menarik bagi banyak pengguna.

Jadi, pada dasarnya saya ingin tahu apakah ada yang punya pengalaman menginstal, membangun atau memperluas geocoding opensource dan / atau alat koreksi alamat.

Saya mengetahui geocoder: Inisiatif US 2.0 yang menurut saya dikelola oleh geocommons tetapi saya tidak yakin apakah ada alternatif yang lebih baik, alat sumber terbuka lainnya, apakah sistem mereka dapat diperluas secara efektif atau jika ada perkembangan yang mungkin tidak saya sadari.

Tujuan saya adalah sebagai berikut:

  1. Saya memerlukan alat yang sangat akurat yang mampu secara otomatis mem-parsing dan / atau menstandarisasi data lokasi yang dimasukkan oleh pengguna dari bidang input tunggal semuanya dalam waktu nyata dan dengan volume setinggi mungkin.
  2. Input data akan menjadi satu atau lebih komponen alamat berikut: kode pos, county, city, street, address, state.
  3. Input data juga harus dapat dicari dari database geonames khusus kami. Misalnya ia dapat memasukkan nama lingkungan atau bukan nama lokasi USPS yang secara alami bukan variabel alamat standar.

Mengingat tujuan-tujuan ini, saya menyadari fakta bahwa ketika diberikan bidang formulir tunggal untuk melakukan pencarian seperti itu, setiap pengguna akan memasukkan datanya dalam format yang berbeda, sementara faktor lain umumnya salah eja.

Selain menggunakan basis data sensus sebagai inti untuk alamat / rentang yang valid (semua yang saya yakini Geocoder: AS, saya percaya beberapa jenis kemampuan untuk mendefinisikan "alias" yang dikenal akan ideal untuk kesalahan ejaan nama jalan yang dikenal. Hal yang sama berlaku untuk hal-hal seperti pengguna memasuki Ave dibandingkan dengan Ave dibandingkan dengan Avenue. Jangan berpikir kemampuan alias seperti itu sepenuhnya mungkin dengan alat Geocoder: US.

Sementara elemen-elemen di atas memang bisa menyelesaikan sebagian besar masalah, saya pikir beberapa jenis pencocokan fuzzy yang efektif perlu ada ketika input tidak dapat dicocokkan dengan% usia yang cukup tinggi.

Jika input data dapat secara efektif dipecah menjadi elemen individu berdasarkan beberapa aturan yang diasumsikan dan kemudian menggunakan jenis komponen "match score" untuk fuzzy cocok dengan elemen yang tidak cocok harus didasarkan pada elemen-elemen yang sudah "cocok" dengan yang tinggi. gelar.

Sebagai contoh: Saya akan menganggap geocoding menjadi seefektif mungkin kita perlu mengekstraksi elemen data individual dari bidang input terlebih dahulu dalam upaya untuk mempersempit "area" yang coba dicari oleh pengguna. Dalam pandangan saya ini berarti bahwa angka 5 digit dapat dianggap sebagai kode pos, jika ada elemen lain seperti nama kota yang cocok dengan kode pos dengan asumsi bahwa kita memiliki "area" yang benar ... Selanjutnya kita menggunakan sisanya data untuk mencoba menemukan kecocokan penuh, parsial atau kabur, skor dan daftar hasil yang mungkin.

Dalam hal apa pun - saya akan sangat menghargai jika ada yang bisa memberikan beberapa saran di sini bersama dengan saran, statistik kinerja atau perkembangan mendatang yang mereka sadari yang mungkin menyesuaikan arah saya (seperti penggunaan postgis 2.0 sebagai sarana untuk meningkatkan kemampuan mencocokkan)

NetConstructor.com
sumber

Jawaban:

7

Anda dapat mencoba gisgraphy. itu termasuk pengurai alamat, geocoder, dan geocoder terbalik. (jangan gunakan layanan gratis untuk batch, tetapi instal di server Anda). fulltextsearch dengan synomyms, pemeriksa ejaan mungkin bisa membantu juga. tidak ada masalah jika Anda membutuhkan volume tinggi, karena gisgraphy tersedia sebagai layanan web dengan beberapa format (XML, JSON, PHP, Python, Ruby, YAML, GeoRSS, dan Atom) sehingga dapat meningkatkan skala

gisgraphy

gisgraphy
sumber
6

Saya punya pengalaman dengan ini. Di SmartyStreets (tempat saya bekerja), kami membuat perangkat lunak verifikasi alamat yang disebut LiveAddress . (Ini sebenarnya semua berbasis web; tidak perlu mengunduh atau menginstalnya.)

Banyak tantangan untuk memvalidasi dan menstandardisasi alamat, saya yakinkan Anda. Itu menjadi lebih rumit ketika Anda mencoba untuk mengurai alamat menjadi komponen-komponen tertentu sendiri, atau menerapkan "pencarian fuzzy." Tapi jangan takut ... kami telah secara tidak resmi menerbitkan prosedur dasar untuk melakukan validasi alamat bentuk bebas . Meskipun layanan kami bukan open source, kami cukup terbuka untuk berbagi keahlian kami dengan komunitas dan menetapkan standar baru untuk kualitas dan kinerja.

Bagaimanapun, saya pikir Anda akan menemukan halaman itu agak membantu. API seperti milik kami akan menangani ribuan permintaan per detik karena kami didistribusikan secara geografis di tiga pusat data secara nasional . LiveAddress harus dapat mengatasi "kecocokan fuzzy" untuk Anda dan hanya mengembalikan hasil yang valid, mengisi bagian yang hilang dan mengoreksi kesalahan ejaan.

Ini memperhitungkan alias resmi USPS dan bahkan nama jalan tidak resmi atau nama lokasi dan mencocokkannya dengan titik akhir resmi yang dapat dikirim. Namun, untuk nama kustom Anda sendiri, Anda harus memasukkannya ke dalam basis data Anda sendiri untuk itu.

Kata terakhir juga: Saya ingin menambahkan bahwa meskipun alat open source bagus dan gratis, Anda mungkin akan menukarnya dengan beberapa aspek layanan, kinerja, dan kualitas keseluruhan. Bahkan jika Anda meng-host layanan di rumah, Anda bertanggung jawab untuk mempertahankannya dan memenuhi tuntutan seperti apa, dalam kasus Anda, muatan yang sangat besar.

Saya akan dengan senang hati menjawab pertanyaan Anda sendiri tentang alamat - saya pikir tugas di depan Anda benar-benar sangat menarik, dan mungkin tampak luar biasa tanpa sumber daya yang tepat.

Mat
sumber
3

Alamat standardisasi (koreksi alamat AKA, normalisasi alamat, parsing alamat) bukanlah tugas yang mudah. Jika Anda memiliki jari cepat dan kreativitas yang cukup, REGEX yang sangat bagus dapat dibuat yang dapat melakukan pekerjaan yang sangat baik. Namun, itu tidak menangani dengan baik kasus tepi di mana hasilnya bisa ambigu. Alasannya adalah kurangnya konteks. Anda harus tahu seperti apa hasil yang benar untuk mengetahui bahwa Anda telah mencapai akurasi yang Anda butuhkan. Tentu saja, mengambil daftar alamat 100k dan mampu menguraikan 70% dari mereka secara akurat (hanya menggunakan REGEX) lebih baik daripada tidak menguraikan salah satu dari mereka. Tapi, berapa lama waktu yang dibutuhkan untuk mengurai alamat "keras" yang tersisa? WAKTU YANG LAMA. Mereka membutuhkan sejumlah besar fungsi penguraian khusus karena konteksnya, atau "jawaban yang benar" tidak diketahui. Di sinilah verifikasi alamat berguna karena "konteks" diketahui. Alamat yang terstandardisasi dan terkoreksi sepenuhnya diketahui dan daftar master dapat digunakan untuk membandingkan hasilnya.

Saya sering ditanyakan hal ini karena saya bekerja dengan verifikasi alamat di Smartystreets .

Jeffrey
sumber
2

Satu tantangan yang dihadapi oleh layanan verifikasi alamat adalah bahwa beberapa alamat valid, namun tidak dapat dikirimkan oleh USPS. Saya tinggal di kota kecil di mana USPS tidak menyediakan pengiriman rumah; semua penduduk harus menggunakan kotak PO. Namun, baik UPS dan FedEx menyediakan pengiriman ke rumah kami, jadi jelas alamat kami berarti. ;-)

Bagaimanapun, demo 'LiveAddress' SmartyStreets tidak mengenali alamat rumah saya. Ini menimbulkan pertanyaan apakah saya ingin mengandalkan API yang bergantung pada verifikasi USPS. Memikirkan pergi rute open source untuk proyek yang saya mulai.

Andrew Basile
sumber
1

Saya telah menemukan DataMatch oleh Data Ladder , yang merupakan pencocokan fuzzy yang sangat baik dan alat pengalamatan alamat / alamat yang digunakan di seluruh bisnis dan akan bekerja dengan sangat baik untuk situasi ini. Mereka menawarkan uji coba gratis untuk pengguna baru.

Bahkan, evaluasi independen yang diverifikasi telah dilakukan terhadap perangkat lunak yang membandingkannya dengan alat perangkat lunak utama oleh IBM dan SAS. Ada penelitian yang dilakukan di Curtin University Centre untuk Data Linkage di Australia yang mensimulasikan pencocokan 4,4 juta catatan. Ini mengidentifikasi apa yang dimiliki penyedia dalam hal akurasi (Jumlah kecocokan yang ditemukan vs yang tersedia. Jumlah kecocokan yang salah)

  1. DataMatch Enterprise, Akurasi Tertinggi (> 95%), Sangat Cepat, Biaya Rendah
  2. Tahap Kualitas IBM, akurasi tinggi (> 90%), Sangat Cepat, Biaya Tinggi (> $ 100K)
  3. Fluks Data SAS, Akurasi Medium (> 85%), Cepat, Biaya Tinggi (> 100K)
Ralph Pawne
sumber
1

Ada proyek GitHub yang disebut libpostal yang melakukan parsing / normalisasi alamat jalan di seluruh dunia menggunakan statistik NLP dan data terbuka. Sepertinya sebagian besar aktivitas GitHub adalah pada 2015-2016, tetapi mungkin layak untuk dilihat, terutama di sisi penguraian.

AdamsTips
sumber
0

Sepertinya USPS memiliki alat sekarang!

Saya baru tahu tentang hal itu hari ini. Tampaknya juga gratis.

https://www.usps.com/business/web-tools-apis/welcome.htm

kyurthich
sumber
setelah menggunakannya kembali dan beri kami deskripsi yang lebih panjang tentang cara menggunakannya.
Brad Nesom
Akan melakukan. Saya harus segera bekerja dengannya.
kyurthich
Tautan bergerak dan sekarang sepertinya tidak relevan: "API USPS Web Tools® memungkinkan kereta belanja e-commerce eksternal dan perangkat lunak pengiriman untuk mengakses data USPS® yang berharga - Gratis biaya! Dari tarif pengiriman hingga pelacakan informasi hingga penjadwalan paket pickup, Alat Web membuat pengiriman dengan US Postal Service® lebih mudah dari sebelumnya. Mulailah sekarang atau baca terus untuk mengetahui lebih lanjut. "
PolyGeo
Sepertinya mereka masih memilikinya: usps.com/business/web-tools-apis/…
kyurthich
Saya melihat ini beberapa waktu yang lalu, dan saya percaya ketentuan layanan membatasi penggunaan hanya untuk menjalankan alamat yang sebenarnya Anda kirimi sesuatu. (Secara teknis Anda tidak dapat menggunakannya untuk penggosokan dan pemeliharaan daftar umum.)
AdamsTips