Open Source Address Correction / Parser con Fuzzy Matching


8

Aquí hay un poco de una pregunta detallada relacionada con el análisis de direcciones / geocodificación que creo que debería ser interesante para muchos usuarios.

Entonces, esencialmente tengo curiosidad por saber si alguien ha tenido alguna experiencia instalando, construyendo o extendiendo una herramienta de geocodificación de código abierto y / o corrección de direcciones.

Soy consciente del geocodificador: las iniciativas de US 2.0 que creo que son mantenidas por geocommons, pero no estoy seguro de si hay mejores alternativas, otras herramientas de código abierto, si su sistema se puede extender de manera efectiva o si hay algún desarrollo que no conozca.

Mis objetivos son los siguientes:

  1. Necesito una herramienta altamente precisa que sea capaz de analizar y / o estandarizar automáticamente los datos de ubicación ingresados ​​por los usuarios desde un solo campo de entrada, todo en tiempo real y con el mayor volumen posible.
  2. Los datos de entrada serían uno o más de los siguientes componentes de dirección: código postal, condado, ciudad, calle, dirección, estado.
  3. Los datos de entrada también deben poder buscar desde nuestra base de datos de geonames personalizada. Por ejemplo, puede ingresar el nombre de un vecindario o un nombre de ubicación que no sea USPS que, naturalmente, no son variables de dirección estándar.

Teniendo en cuenta estos objetivos, soy muy consciente del hecho de que cuando se le da un solo campo de formulario para realizar dicha búsqueda, cada usuario ingresará sus datos en diferentes formatos, mientras que el otro factor generalmente cae en errores ortográficos.

Además de utilizar la base de datos del censo como núcleo para las direcciones / rangos válidos (todo lo que creo que Geocoder: EE. UU. Hace, creo que algún tipo de capacidad para definir "alias" conocidos sería ideal para errores ortográficos conocidos de nombres de calles. cosas como que un usuario ingrese a Ave en comparación con Ave. en comparación con Avenue. No piense que tales capacidades de alias son completamente posibles con la herramienta Geocoder: US.

Si bien los elementos anteriores pueden resolver la mayoría de los problemas, creo que debe existir algún tipo de coincidencia difusa efectiva cuando la entrada no puede coincidir con un% de edad lo suficientemente alto.

Si los datos de entrada se pueden analizar efectivamente en elementos individuales basados ​​en algunas reglas supuestas y luego utilizar un tipo de componente de "puntaje de coincidencia" para igualar de forma difusa, cualquier elemento no emparejado tendría que basarse en aquellos elementos que ya estaban "emparejados" con un alto la licenciatura.

Por ejemplo: voy a suponer que para que la geocodificación sea lo más efectiva posible, primero necesitamos extraer elementos de datos individuales del campo de entrada en un intento de reducir el "área" para la que el usuario está tratando de encontrar resultados. En mi opinión, esto significa que se podría suponer que un número de 5 dígitos es un código postal, si hay otro elemento como un nombre de ciudad que coincida con el código postal, suponiendo que tenemos el "área" correcta ... A continuación, usamos el resto datos para tratar de encontrar una coincidencia completa, parcial o difusa, anotar y enumerar los posibles resultados.

En cualquier caso, agradecería enormemente si alguien pudiera proporcionar algún consejo aquí junto con cualquier consejo, estadísticas de rendimiento o desarrollos futuros que conozcan que puedan ajustar mi dirección (como el uso de postgis 2.0 como un medio para mejorar las capacidades de correspondencia)

Respuestas:


7

Puedes probar la gisgrafía. incluye un analizador de direcciones, un geocodificador y un geocodificador inverso. (no use el servicio gratuito para lotes, sino instálelo en su servidor). búsqueda de texto completo con sinónimos, el corrector ortográfico probablemente también ayude. no hay problemas si necesita grandes volúmenes, porque la gisgrafía está disponible como servicios web con varios formatos (XML, JSON, PHP, Python, Ruby, YAML, GeoRSS y Atom) para que pueda escalar

gisgrafía


6

Tengo algo de experiencia con esto. En SmartyStreets (donde trabajo), creamos un software de verificación de direcciones llamado LiveAddress . (En realidad, todo está basado en la web; no es necesario descargarlo ni instalarlo).

Los desafíos de validar y estandarizar direcciones son muchos, te lo aseguro. Se vuelve aún más complicado cuando intenta analizar la dirección en componentes particulares usted mismo, o implementando "búsqueda difusa". Pero no temas ... hemos publicado de manera no oficial un procedimiento básico para realizar la validación de direcciones de forma libre . Si bien nuestro servicio no es de código abierto, estamos bastante abiertos a compartir nuestra experiencia con la comunidad y establecer nuevos estándares de calidad y rendimiento.

De todos modos, creo que encontrarás esa página algo útil. Una API como la nuestra manejará miles y miles de solicitudes por segundo, ya que estamos geodistribuidos en tres centros de datos a nivel nacional . LiveAddress debería poder encargarse de la "coincidencia difusa" por usted y devolver solo resultados válidos, completando las piezas faltantes y corrigiendo errores ortográficos.

Tiene en cuenta los alias oficiales de USPS e incluso nombres de calles o nombres de ubicaciones no oficiales y los compara con puntos finales oficiales y entregables. Sin embargo, para sus propios nombres personalizados, tendrá que trabajarlo en su propia base de datos para eso.

Una última palabra también: agregaría que, si bien las herramientas de código abierto son excelentes y gratuitas, probablemente lo intercambie por algún aspecto de servicio, rendimiento y calidad general. Incluso si hospeda el servicio internamente, es responsable de mantenerlo y satisfacer las demandas de lo que parece, en su caso, una gran carga útil.

Estaré encantado de responder personalmente sus propias preguntas sobre las direcciones: creo que la tarea que tiene ante usted es realmente bastante interesante y puede parecer abrumadora sin los recursos adecuados.


3

La estandarización de direcciones (corrección de direcciones AKA, normalización de direcciones, análisis de direcciones) no es una tarea simple. Si tiene dedos rápidos y amplia creatividad, se puede preparar un REGEX muy fino que puede hacer un trabajo notablemente bueno. Sin embargo, no maneja muy bien los casos extremos donde los resultados pueden ser ambiguos. La razón es la falta de contexto. Debe saber cómo se ve el resultado correcto para saber que ha logrado la precisión que necesita. Ciertamente, tomar una lista de 100k direcciones y poder analizar el 70% de ellas con precisión (usando solo REGEX) es mejor que no analizar ninguna de ellas. Pero, ¿cuánto tiempo lleva analizar las direcciones "duras" restantes? MUCHO TIEMPO. Requieren una gran cantidad de funciones de análisis especializadas porque se desconoce el contexto o la "respuesta correcta". Aquí es donde la verificación de la dirección es útil porque se conoce el "contexto". Se conoce la dirección totalmente estandarizada y corregida y la lista maestra se puede utilizar para comparar los resultados.

Me preguntan mucho porque trabajo con la verificación de direcciones en Smartystreets .


2

Uno de los desafíos que enfrentan los servicios de verificación de direcciones es que algunas direcciones son válidas, pero USPS no las puede entregar. Vivo en un pequeño pueblo en el que USPS no ofrece servicio a domicilio; Todos los residentes deben utilizar apartados postales. Sin embargo, tanto UPS como FedEx proporcionan la entrega a nuestros hogares, por lo que claramente nuestras direcciones significan algo. ;-)

De todos modos, la demostración de SmartyStreets 'LiveAddress' no reconoce la dirección de mi casa. Esto pone en duda si me gustaría confiar en una API que depende de la verificación de USPS. Estoy pensando en ir a la ruta de código abierto para un proyecto que estoy comenzando.


1

Me he encontrado con DataMatch de Data Ladder , que es una excelente herramienta de análisis de direcciones / estandarización de direcciones difusa utilizada en todas las empresas y que funcionaría realmente bien para esta situación. Ofrecen una prueba gratuita para nuevos usuarios.

De hecho, se realizó una evaluación verificada independiente del software comparándolo con las principales herramientas de software de IBM y SAS. Hubo un estudio realizado en el Centro de Enlace de Datos de la Universidad de Curtin en Australia que simuló la coincidencia de 4.4 millones de registros. Identificó lo que los proveedores tenían en términos de precisión (Número de coincidencias encontradas vs disponibles. Número de coincidencias falsas)

  1. DataMatch Enterprise, mayor precisión (> 95%), muy rápido, bajo costo
  2. IBM Quality Stage, alta precisión (> 90%), muy rápido, alto costo (> $ 100K)
  3. Flujo de datos SAS, precisión media (> 85%), rápido, alto costo (> 100K)

1

Existe un proyecto de GitHub llamado libpostal que analiza / normaliza las direcciones de las calles de todo el mundo utilizando datos estadísticos de PNL y datos abiertos. Parece que la mayor parte de la actividad de GitHub fue en 2015-2016, pero podría valer la pena echarle un vistazo, especialmente en el lado del análisis.


0

¡Parece que USPS tiene una herramienta ahora!

Me acabo de enterar hoy. También parece ser gratis.

https://www.usps.com/business/web-tools-apis/welcome.htm


después de usarlo, regrese y dénos una descripción más larga sobre cómo usarlo, por favor.
Brad Nesom

Lo haré Debería trabajar con eso en breve.
kyurthich

El enlace se movió y ahora parece que puede no ser relevante: "Las API de USPS Web Tools® permiten que el carrito de compras de comercio electrónico externo y el software de envío accedan a datos valiosos de USPS® - ¡Gratis! Desde tarifas de envío hasta información de seguimiento y programación de un paquete "Web Tools" hace que el envío con US Postal Service® sea más fácil que nunca. Comience ahora o siga leyendo para obtener más información ".
PolyGeo

Parece que todavía lo tienen: usps.com/business/web-tools-apis/…
kyurthich el

Revisé esto hace un tiempo, y creo que los términos del servicio limitan el uso a solo las direcciones en ejecución a las que realmente está enviando algo. (Técnicamente, no podría usarlo para la limpieza y mantenimiento de listas generales.)
AdamsTips
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.