Алгоритмы распознавания физического адреса на веб-странице - PullRequest
6 голосов
/ 08 декабря 2008

Каковы лучшие алгоритмы для распознавания структурированных данных на странице HTML?

Например, Google распознает адрес дома / компании по электронной почте и предлагает карту по этому адресу.

Ответы [ 9 ]

11 голосов
/ 08 декабря 2008

Среда извлечения именованных сущностей, такая как GATE , как минимум, решила проблему извлечения информации для местоположений, чему помогает справочник известных мест, чтобы помочь решить общие проблемы. Если страницы не были сгенерированы машиной из общего источника, вы найдете регулярные выражения немного слабоватыми для работы.

4 голосов
/ 08 декабря 2008

Если у вас есть правильная разметка, а не только текст со страницы, я предлагаю предложение «Красивый суп» выше. В частности, адресная метка должна обеспечивать наименьшее количество низко висящих фруктов. Также обратите внимание на микроформат adr . Я бы только вернулся к регулярным выражениям, если первые два не получили достаточно информации или у меня не было необходимых данных для поиска первых двух.

3 голосов
/ 08 декабря 2008

Я предполагаю, что Google использует двухэтапный подход к проблеме (по крайней мере, это то, что я бы сделал). Сначала они используют довольно общий шаблон поиска, чтобы выбрать все, что может быть адресом, а затем они используют свою базу данных карты, чтобы найти эту строку и посмотреть, нет ли у них совпадений. Если они это сделают, это, вероятно, адрес, если они этого не сделают, то, вероятно, нет. Если вы можете использовать базу данных карт в своем коде, это, вероятно, облегчит вашу жизнь.

Если вы не можете ограничить географическое расположение адресов, я предполагаю, что практически невозможно определить строку как адрес, просто проанализировав ее, просто из-за огромного разнообразия форматов адресов, используемых по всему миру.

3 голосов
/ 08 декабря 2008

Если вам также приходится обрабатывать международные адреса, вас ждет головная боль; международные форматы адресов удивительно разнообразны.

2 голосов
/ 08 декабря 2008

Не используйте регулярные выражения. Используйте существующий анализатор HTML, например, в Python, я настоятельно рекомендую BeautifulSoup . Даже если вы используете регулярное выражение для разбора HTML-элементов, захватывает BeautifulSoup.

Если вы делаете это с помощью своих собственных регулярных выражений, вам нужно не только беспокоиться о поиске нужных вам данных, но и о таких вещах, как недопустимый HTML, и множестве других неочевидных проблем, с которыми вы столкнетесь. .

1 голос
/ 08 декабря 2008

То, что вы спрашиваете, на самом деле является довольно сложной проблемой, если вы хотите, чтобы оно было идеальным. В то время как простое регулярное выражение сделает его в большинстве случаев правильным, написать его так, чтобы оно получалось абсолютно правильным каждый раз, крайне сложно. Есть много странных угловых случаев, и в некоторых случаях нет однозначного ответа. Большинство веб-сайтов, с которыми я сталкивался, довольно плохо справлялись со всеми, кроме самых простых URL.

Если вы хотите пойти по маршруту регулярного выражения, лучше всего выбрать исходный код http://metacpan.org/pod/Regexp::Common::URI::http

0 голосов
/ 27 июля 2017
  1. Это зависит от вашего требования.

для электронной почты и контактных данных регулярных выражений более чем достаточно. Только для адресов регулярное выражение не поможет. Подумайте о тегах NLP (NER) и POS. Для поиска информации, связанной с людьми, вы не можете ничего сделать без NER.

  • Если вам нужна информация, такая как абзацы, получите содержимое с помощью тегов.
0 голосов
/ 20 мая 2011

Вы можете проверить этот пример извлечения США http://code.google.com/p/graph-expression/wiki/USAAddressExtraction

0 голосов
/ 08 декабря 2008

Опять же, регулярные выражения должны помочь.

Из-за большого разнообразия адресов вы можете только догадываться, является ли строка адресом или нет по выражению типа "(число), (имя) Street | Boulevard | Main" и т.д.

Вы можете рассмотреть некоторые расширения Firefox, которые предназначены для сопоставления найденных в тексте адресов, чтобы увидеть, как они работают

...