Pregunta

¿Cuáles son los mejores algoritmos para reconocer datos estructurados en una página HTML?

Por ejemplo, Google reconocerá la dirección de su hogar / empresa en un correo electrónico y ofrecerá un mapa a esta dirección.

¿Fue útil?

Solución

Un marco de extracción de entidades con nombre como GATE ha abordado al menos el problema de extracción de información para ubicaciones, con la ayuda de un diccionario geográfico de lugares conocidos para ayudar a resolver problemas comunes. A menos que las páginas se generen a máquina desde una fuente común, encontrará expresiones regulares un poco débiles para el trabajo.

Otros consejos

Si tiene el marcado correcto & # 8212; y no solo el texto de la página & # 8212; secundo la sugerencia de Beautiful Soup anterior. En particular, la etiqueta de dirección debe proporcionar la fruta más baja que cuelga. Consulte también el adr microformat . Solo volvería a las expresiones regulares si los dos primeros no obtuvieran suficiente información o si no tuviera los datos necesarios para buscar los dos primeros.

Si también tiene que manejar direcciones internacionales, se encontrará con un mundo de dolores de cabeza; los formatos de dirección internacional son increíblemente variados.

Supongo que Google adopta un enfoque de dos pasos para el problema (al menos eso es lo que haría). Primero usan un patrón de búsqueda bastante general para seleccionar todo lo que podría ser una dirección, y luego usan su base de datos de mapas para buscar esa cadena y ver si obtienen alguna coincidencia. Si lo hacen, probablemente sea una dirección; si no lo hacen, probablemente no lo sea. Si puede usar una base de datos de mapas en su código, eso probablemente le facilitará la vida.

A menos que pueda limitar la ubicación geográfica de las direcciones, supongo que es prácticamente imposible identificar una cadena como una dirección simplemente analizándola, simplemente debido a la gran variación de formatos de dirección utilizados en todo el mundo.

No use expresiones regulares. Utilice un analizador HTML existente, por ejemplo, en Python. Recomiendo encarecidamente BeautifulSoup . Incluso si usa una expresión regular para analizar los elementos HTML que toma BeautifulSoup.

Si lo hace con sus propias expresiones regulares, no solo tiene que preocuparse por encontrar los datos que necesita, sino también por cosas como HTML no válido y muchos otros problemas muy poco obvios con los que tropezará. .

Lo que estás preguntando es realmente un problema bastante difícil si quieres que sea perfecto. Si bien una expresión regular simple lo hará bien la mayoría de las veces, escribir uno que lo haga exactamente bien cada vez es endiabladamente difícil. Hay muchos casos extraños en las esquinas y en varios casos no hay una única respuesta inequívoca. La mayoría de los sitios web que he visto hacen un trabajo bastante malo manejando todas las URL excepto las más simples.

Si desea seguir la ruta regexp, su mejor opción es verificar el código fuente de http://metacpan.org/pod/Regexp::Common::URI :: http

Nuevamente, las expresiones regulares deberían hacer el truco.

Debido a la gran variedad de direcciones, solo puede adivinar si una cadena es una dirección o no mediante una expresión como " (número), (nombre) Calle | Boulevard | Principal " ;, etc.

Puede considerar buscar algunas extensiones de Firefox que tengan como objetivo asignar direcciones encontradas en el texto para ver cómo funcionan

Puede consultar este ejemplo de extracción de EE. UU. http://code.google.com / p / graph-expression / wiki / USAAddressExtraction

  1. Depende de su requerimiento.

para correo electrónico y datos de contacto regex es más que suficiente. Para las direcciones, la expresión regular por sí sola no ayudará. Piensa en PNL (NER) & amp; Etiquetado POS. Para encontrar información relacionada con personas no puede hacer nada sin NER.

  • Si necesita información como párrafos, obtenga el contenido usando etiquetas.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top