Lagi

Bantuan diperlukan menggunakan REGEXP untuk parsing string alamat address

Bantuan diperlukan menggunakan REGEXP untuk parsing string alamat address


Menggunakan JavaScript, tujuan saya adalah membuat fungsi pencarian alamat "cerdas" dengan satu kotak teks (bukan kotak teks terpisah untuk nomor rumah, nama jalan, jenis jalan, pinggiran kota, dll).

Saya mencoba mengurai string input yang dimasukkan oleh pengguna, untuk menentukan komponen alamat mana yang telah dimasukkan. Komplikasinya adalah pengguna dapat memasukkan kombinasi seperti:

  • 1 Kent Street Sydney (nomor, nama, jenis, pinggiran kota)
  • 1 King Georges Road Sydney (nomor, 2x nama, jenis, pinggiran kota)
  • 1 New South Head Road Rose Bay (nomor, 3x nama, jenis, 2x pinggiran kota)
  • Kent Street Sydney (nama, jenis, pinggiran kota)
  • Sydney (pinggiran kota)
  • 2000 (Kode Pos)
  • 275/2/1000 (banyak/bagian/rencana)

Saat ini saya memecah string input menjadi token menggunakan string.split("") dan iterasi melalui setiap token untuk menentukan komponen mana yang diwakilinya.

Ini berfungsi sebagian besar waktu (gagal di 1 St Georges Road Sydney), tetapi seorang rekan menyarankan saya mencoba menggunakan REGEXP untuk meningkatkan proses. Saya tidak dapat melihat contoh di mana ini telah dilakukan untuk pencarian alamat.

Adakah yang punya contoh di mana REGEXP telah digunakan untuk validasi alamat?

(Perhatikan bahwa saya tidak benar-benar memasukkan informasi ini ke dalam geocoder pada tahap ini - saya hanya perlu memecah string input menjadi bagian-bagian komponennya, dan mengetahui apa yang diwakili oleh setiap bagian)

Terima kasih, Steve


Saya tidak berpikir ekspresi reguler akan membantu Anda di sini, karena ini dirancang untuk pencocokan pola daripada interpretasi semantik, jadi Andastring.split()fungsi mungkin akan melakukannya juga.

Tetapi tanpa database untuk membandingkan setiap token, akan sangat sulit untuk menentukan level apa yang diwakili oleh token. Jika, misalnya token paling kanan adalahSelandia, itu bisa berupa negara atau provinsi, tergantung pada token berikutnya di sebelah kiri.

Saya tahu Anda mengatakan bahwa Anda belum menjalankannya melalui geocoder, tetapi saya akan mengatakan bahwa itu adalah cara terbaik untuk melakukannya. Dengan menggunakan API Geocoding Google, Anda dapat meneruskan alamat yang diformat dengan cara yang menarik dan itu akan berfungsi dengan baik untuk mengembalikan versi alamat yang diformat dengan benar.


Mengingat komentar saya tentang jawaban MerseyViking, saya pikir saya akan menguraikan hanya untuk kejelasan dan kelengkapan.

Saya dulu bekerja di industri parsing/verifikasi alamat untuk SmartyStreets. Apa yang Anda coba lakukan, menurut saya, disebut "Pemrosesan alamat satu baris" (kami menyebutnya SLAP). Ini adalah tugas yang rumit, karena alamat pasti akan sangat, sangat berbeda tergantung pada input pengguna, jenis alamat, dan apakah itu lengkap atau benar.

Ada terlalu banyak faktor yang harus dipecahkan oleh ekspresi reguler, seperti yang disiratkan MerseyViking. Daripada berpotensi melanggar Persyaratan Layanan Google (jika tidak, itu adalah solusi yang cukup bagus -- jika Anda tidak peduli bahwa alamat tersebut berpotensi tidak valid; Google melakukan perkiraan alamat, bukan validasi alamat), saya sarankan menggunakan layanan bersertifikat CASS (untuk alamat yang berbasis di AS) untuk melakukan ini. Karena sepertinya Anda bekerja dengan alamat Australia, mungkin lihat apakah ada alternatif "tanah di bawah". SmartyStreets menawarkan layanan alamat internasional yang dapat membantu Anda.

Kami sedang mengembangkan algoritme yang disesuaikan untuk melakukan SLAP secara akurat, dan sementara kami mengubahnya, menyelesaikannya, dan mengimplementasikannya, Anda mungkin tertarik dengan gagasan kasar algoritme. Ini dijelaskan di sini dalam beberapa detail.


Yang ini menggunakan penguraian alamat AS berbasis REGEX: http://search.cpan.org/~timb/Geo-StreetAddress-US-1.04/US.pm Dan itu adalah port javascript: https://github.com/hassansin/parse- alamat. Anda mungkin dapat melakukan hal yang sama untuk negara lain.


Peramalan penyediaan broadband

Penyediaan layanan telekomunikasi pita lebar di Amerika Serikat secara spasial heterogen. Studi sebelumnya menemukan bahwa daerah perkotaan biasanya memiliki pilihan platform dan penyedia akses yang lebih besar jika dibandingkan dengan daerah pedesaan atau terpencil. Oleh karena itu, kemampuan untuk meramalkan penyediaan broadband penting untuk memahami tren regional dalam persaingan dan ketersediaan telekomunikasi. Makalah ini memberikan analisis komparatif prakiraan ekonometrik penampang dan spasial dari penyediaan broadband, dengan hasil yang menunjukkan bahwa integrasi variabel sisi permintaan yang direferensikan secara spasial secara signifikan meningkatkan akurasi prakiraan jangka pendek dan menengah.


Pengarang

Transfer Sintaks Sumber Daya Rendah dengan Pengurutan Ulang Sumber Tanpa Pengawasan

Kami menjelaskan metode transfer lintas bahasa untuk penguraian ketergantungan yang .
13/03/2019 oleh Mohammad Sadegh Rasooli, dkk. ∙ 0 ∙ Bagikan

PPT: Transfer Parsimonious Parser untuk Adaptasi Lintas Bahasa Tanpa Pengawasan

Transfer lintas bahasa adalah teknik terkemuka untuk mengurai sumber daya rendah l.
27/01/2021 oleh Kemal Kurniawan, dkk. ∙ 0 ∙ Bagikan

Parsing Ketergantungan Lintas Bahasa Menggunakan TreeBank Campuran Kode

Terjemahan Treebank adalah metode yang menjanjikan untuk transfer lintas bahasa.
09/05/2019 oleh Zhang Meishan, dkk. ∙ 0 ∙ Bagikan

Parsing Ketergantungan Lintas-Bahasa Jarak Jauh atau Dekat, Jarak Jauh

Transfer lintas bahasa adalah sarana utama untuk memanfaatkan pengetahuan dari yang tinggi.
11/01/2018 oleh Wasi Uddin Ahmad, dkk. ∙ 0 ∙ Bagikan

Adaptasi Lintas Bahasa Menggunakan Ketergantungan Universal

Kami menjelaskan metode adaptasi lintas bahasa berdasarkan sintaksis parse t.
03/24/2020 oleh Nasrin Taghizadeh, dkk. ∙ 0 ∙ Bagikan

Prioritas Gaussian empiris untuk pembelajaran transfer lintas bahasa

Algoritma pembelajaran model urutan biasanya memaksimalkan kemungkinan log min.
01/09/2016 oleh Anders Søgaard, dkk. ∙ 0 ∙ Bagikan

Transfer Peran Semantik Lintas Bahasa: Dari Teks Mentah ke Peran Semantik

Kami menjelaskan metode transfer berdasarkan proyeksi anotasi untuk dikembangkan.
04/05/2019 oleh Maryam Aminian, dkk. ∙ 0 ∙ Bagikan


6 Jawaban 6

Jawaban berikut menggunakan awk dan mengatasi fakta bahwa alamat IPv4 yang valid bukan hanya 4 tupel hingga 3 digit, tetapi juga batasan pada digit yang lebih kecil dari 256:

Ini akan menentukan IP dummy sebagai variabel dummy . Ini kemudian akan mempertimbangkan . sebagai pemisah bidang dan periksa apakah

  • ada tepat 4 bidang, dan
  • jika setiap bidang hanya terdiri dari 1-3 digit, dengan jumlah yang dihasilkan lebih kecil dari 256

Jika ada kondisi yang tidak terpenuhi, ganti baris dengan IP dummy. Setelah diproses, garis (termasuk modifikasi yang dibuat) dicetak.

Perhatikan bahwa RegExp yang Anda usulkan tidak hanya akan menerima bidang byte yang lebih besar dari 255, tetapi karena kurangnya penjangkaran juga baris di mana hanya sub-string yang cocok dengan "4 angka 1-3 digit, dipisahkan oleh titik".