Алгоритмы поиска строки - PullRequest
       22

Алгоритмы поиска строки

6 голосов
/ 21 декабря 2011


Я пытаюсь получить контактную информацию на страницах контента с нескольких веб-сайтов (их тысячи).Я хотел бы спросить экспертов, как вы, ребята, прежде чем почесать голову.Все, что мне нужно, это адрес, адреса электронной почты, номера телефонов и контактные данные, если таковые имеются.

Я думаю, вы уже поняли проблему.Да, это форматирование ... поскольку нет стандартного формата, которому следуют веб-сайты, очень сложно точно указать точную информацию, которая мне нужна.Некоторые веб-сайты спроектированы с использованием флеш-страниц, свяжитесь с нами, а некоторые другие веб-сайты оформляют контактную информацию в виде типов изображений с пользовательскими шрифтами.

И советы / идеи / предложения в основном приветствуются ...

Спасибо....

Ответы [ 3 ]

10 голосов
/ 01 января 2012

Это, как и следовало ожидать, отнюдь не тривиальная задача. Вот один из подходов к этому:

  1. Используйте инвертированную систему индексации, такую ​​как Lucene / Solr или Sphinx для индексации страниц. Возможно, вам придется написать собственный сканер / паук. Apache Nutch и другие гусеничные машины предлагают паутинга из коробки. Если содержимое довольно статичное, загрузите его в свою систему локально.

  2. Как только контент проиндексирован, вы можете запросить его для адресов электронной почты, телефонных номеров и т. Д., Создав булевский запрос, такой как: // для электронной почты // для телефона # круглые скобки Содержание: @ AND (Содержание: .COM ИЛИ Содержание: .NET) ИЛИ Содержание: "(" ИЛИ Содержание: ")" `Важно: предыдущий код не должен восприниматься буквально. Вы можете стать еще интереснее, используя Lucene Regex Query & Span Query, который позволит вам создавать довольно сложные запросы.

  3. Наконец, на страницах результатов: (а) запустите подсветку результатов, чтобы получить фрагмент (ы) вокруг условия запроса и (b) на фрагментах выполните регулярное выражение, чтобы извлечь области интереса.

  4. Если у вас есть набор данных адресов в Северной Америке, вы можете запустить несколько проходов для проверки адресов по i) картографическому провайдеру, например, Bing Maps или Google maps для проверки адресов. Насколько мне известно, USPS и другие организации предлагают за действительный поиск действительного адреса для подтверждения почтовых индексов США и канадских почтовых индексов. или, ii) обратный поиск в DNS адресов электронной почты и т. д.

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

Надеюсь, это поможет.

3 голосов
/ 03 января 2012

Условные случайные поля были использованы именно для таких задач, и были довольно успешными. Вы можете использовать CRF ++ или Stanford Named Entity Recognizer . Оба могут быть вызваны из командной строки без необходимости писать какой-либо явный код.

Короче говоря, вы должны иметь возможность сначала обучить этим алгоритмам, дав им несколько примеров имен, идентификаторов электронной почты и т. Д. С веб-страниц, чтобы они научились распознавать эти вещи. Как только эти алгоритмы станут умными (из-за приведенных вами примеров), вы можете запустить их на своих данных и посмотреть, что вы получите.

Не пугайтесь, глядя на страницу википедии. Пакеты поставляются с множеством примеров, и вы должны начать работу через несколько часов.

1 голос
/ 06 января 2012

@ Микос прав, вам определенно понадобится несколько подходов. Другой возможный инструмент для рассмотрения - Web-Harvest . Это инструмент для сбора веб-данных, который позволяет вам собирать веб-сайты и извлекать интересующие вас данные. Все это делается с помощью файлов конфигурации XML. Программное обеспечение имеет графический интерфейс и интерфейс командной строки.

Это позволяет вам использовать методы для работы с текстом / XML, такие как XSLT, XQuery и Regular Expressions, вы также можете создавать свои собственные плагины. Тем не менее, он в основном сосредоточен на веб-сайтах на основе HTML / XML.

...