Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

Вы можете проверить этот пример извлечения из США http://code.google.com / р / граф-выражение / вики / USAAddressExtraction

  1. Это зависит от вашего требования.

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

  • Если вам нужна информация, например абзацы, получите содержимое с помощью тегов.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top