2011-12-20 18 views
6


Estoy tratando de obtener la información de contacto en las páginas de contenido de un conjunto de sitios web (miles de ellos). Quería preguntarles a expertos como ustedes antes de rascarme la cabeza. Todo lo que necesito es la dirección, las identificaciones de correo electrónico, los números de teléfono y la información de la persona de contacto, si está disponible.Algoritmos de cadena de búsqueda

Creo que ya comprende el problema. Sí, es el formato ... ya que no existe un formato estándar que los sitios web sigan, es realmente difícil precisar la información exacta que necesito. Algunos sitios web están diseñados con páginas de contacto rápido y otros sitios web diseñaron la información de contacto como tipos de imágenes con fuentes personalizadas.

y sugerencias/ideas/sugerencias son en su mayoría de bienvenida ...

Gracias ....

+3

¿Te importaría compartir lo que vas a hacer con esta información? Es más probable que las personas te ayuden si no creen que están ayudando a un spammer. –

+0

No soy spammer :-) Admiro tu preocupación ... Tengo la intención de desarrollar un sitio web como una wiki empresarial con muchas opciones de filtrado que ayuden tanto a empresas como a clientes. – Krishna

+0

quieres hacer IR, toma una mira a Lucene, es realmente poderoso. – JohnJohnGa

Respuesta

10

Esto es como se podría esperar, de ninguna manera es una tarea trivial. Esta es una manera de acercarse a esto:

  1. utilizar un sistema de indexación invertida como Lucene/Solr o Sphinx para indexar las páginas. Es posible que necesite escribir su propio rastreador/araña. Apache Nutch y otros rastreadores ofrecen arañas fuera de la caja. Si el contenido es bastante estático, descárguelos a su sistema localmente.

  2. vez que el contenido está indexado, se puede consultar para direcciones de correo electrónico, números de teléfono, etc. mediante la construcción de una consulta booleana como: // // para el correo electrónico por teléfono # paréntesis Contenido: @ Y (Contenido: .COM O Contenido: .NET) O Contenido: "(" O Contenido: ")" `Importante: el código anterior no debe tomarse literalmente. Puede obtener aún más elegante utilizando Lucene Regex Query & Span Query que le permite generar consultas bastante sofisticadas.

  3. Por último en las páginas de resultados, (a) ejecutar un rotulador resultado para obtener la fragmento (s) en todo el término de consulta y, (b) de los fragmentos, ejecutar una expresión regular para extraer los campos de interés .

  4. Si tiene un conjunto de datos de direcciones de América del Norte, puede ejecutar pasadas múltiples para validar direcciones contra i) un proveedor de mapas como Bing Maps o Google Maps para verificar las direcciones. Por lo que sé, USPS y otros ofrecen búsquedas de direcciones válidas por una tarifa, para validar los códigos postales de EE. UU. Y los códigos postales canadienses. o, ii) una inversa de DNS de consulta para direcciones de correo electrónico y así sucesivamente ....

Eso se debe a empezar .... como he dicho, no existe una única mejor solución Aquí, se necesita probar múltiples enfoques para iterar y llegar al nivel de precisión que desee.

Espero que esto ayude.

+0

También tómalo en www.searchblox.com, ofrece sitios web de rastreo, etc. de fábrica y está construido encima de Lucene. – Mikos

+0

Espero que este enfoque sea el mismo para tirar eventos especiales y horarios del sitio ... Por ejemplo ... evento: cena nerd; hora: 5 de julio de 2012 a las 7 p.m. – Krishna

+0

Sí, todo lo que puede ser regex puede extraerse. – Mikos

3

Conditional Random Fields se han utilizado precisamente para tareas como estas, y han tenido bastante éxito. Puede usar CRF++ o Stanford Named Entity Recognizer. Ambos pueden invocarse desde la línea de comandos sin tener que escribir ningún código explícito.

En resumen, primero debe capacitar a estos algoritmos dándoles algunos ejemplos de nombres, direcciones de correo electrónico, etc. de las páginas web para que aprendan a reconocer estas cosas. Una vez que estos algoritmos se han vuelto inteligentes (debido a los ejemplos que les proporcionó), puede ejecutarlos en sus datos y ver lo que obtiene.

No se asuste mirando la página wikipedia. Los paquetes vienen con muchos ejemplos, y debe estar en funcionamiento en unas pocas horas.

1

@Mikos tiene razón, definitivamente necesitará múltiples enfoques. Otra posible herramienta a considerar es Web-Harvest. Es una herramienta para recolectar datos web y le permite recopilar sitios web y extraer datos que le interesan. Todo esto se hace a través de archivos de configuración XML. El software también tiene una GUI y una interfaz de línea de comando.

Le permite usar técnicas para la manipulación de texto/xml como XSLT, XQuery y expresiones regulares, también puede crear sus propios complementos. Sin embargo, se centra principalmente en sitios web basados ​​en HTML/XML.