Как определить местоположение адреса из текстовой строки php?

Я пытаюсь определить и извлечь любое местоположение входного адреса (не ограничиваясь США — SmartyStreet) из длинной строки текста, используя php на моем xampp.

Я прочитал несколько тем / библиотек о том, как это сделать, и это связано с использованием NLP, API геокодирования Google и регулярных выражений для выполнения вышеупомянутой задачи. Эти 3 ссылки — некоторая правдоподобная ссылка, которая может помочь Ссылка 1, Ссылка 2, Ссылка 3 / Библиотека GitHub (кажется многообещающей).

Тем не менее, я не знаю, могут ли эти ссылки помочь в реализации? Кто-нибудь может мне помочь с этим?

3

Решение

Это, конечно, святой Грааль анализа адресов. Несколько вещей, которые следует учитывать при атаке на этот проект. Во-первых, каждая страна может иметь свой собственный конкретный формат адресации. Как бы хорошо это ни было, стандартного формата адресации не существует.

Вот несколько хороших сборников форматов адресов, но даже они не всегда совпадают:

Форматы адресов от Informatica

Форматы адресов Всемирного почтового союза

Форматы адресов от парня, который потратил много время думать о таких вещах

Шаг 1 —
Ознакомившись со всеми возможными форматами адресов для каждой страны, вы можете сгруппировать одинаковые форматы и создать регулярное выражение для каждой группы.

Шаг 2 —
Это очень важно. Сделайте все возможное, чтобы определить страну, к которой может относиться адрес. Это позволит вам узнать, какое регулярное выражение использовать. Если вы не можете сделать это, у вас может появиться много разных адресных кандидатов.

Шаг 3 —
Используя свое регулярное выражение, просмотрите исходный текст, чтобы определить потенциальные горизонты, начальную и конечную точки для адреса. В США адреса обычно начинаются с номера дома и заканчиваются почтовым индексом (5 или 9 или одиннадцать цифр). В Германии адреса обычно начинаются с названия улицы и заканчиваются городом / штатом или почтовым индексом.

Шаг 4 —
Теперь просмотрите кандидата на этот адрес, чтобы определить различные компоненты адреса, основываясь на вашем понимании шаблона форматирования для этой страны. Найдите следующие компоненты:

  • Основной номер
  • улица направленная (помогает иметь индекс всех возможных значений)
  • название улицы (помогает иметь индекс всех возможных значений)
  • уличный суффикс (помогает иметь индекс всех возможных значений)
  • улица пост-направленная (помогает иметь индекс всех возможных значений)
  • вторичный номер (помогает иметь индекс всех возможных значений)
  • дополнительный номер
  • город (помогает иметь индекс всех возможных значений)
  • государство (помогает иметь индекс всех возможных значений)
  • Почтовый индекс

(их намного больше, но это хорошее начало)

Шаг 5 —
Если вы хотите определить только строку, похожую на адрес, все готово. Вставьте эту строку в инструмент геокодирования и получите широту / долготу, соответствующую ей. Карты Гугл или же OpenStreetMap должен быть в состоянии сделать трюк для вас.

Если вы хотите узнать, является ли адрес действительно действительным (как в случае совпадения с известной записью в авторитетном наборе данных, например, в местном почтовом отделении), то вам нужно будет использовать инструмент проверки адреса, подобный тому, который вы найдете с простой поиск в Google:

Поиск Google: «проверка адреса»

Полное раскрытие: я провожу много времени, размышляя над этой самой темой, пытаясь найти разные способы ее решения и объясняя это многим людям. Я работаю по международным адресам весь день на SmartyStreets.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]