NewGeoCoding: un algoritmo de GeoCoding en escenarios de comida para llevar
GeoCoding es una función importante en los servicios de mapas. Proporciona la capacidad de convertir direcciones de texto estructurado detallado en coordenadas de longitud y latitud, como:
En este escenario, GeoCoding convierte. el texto de la dirección de entrega de alimentos completado por el usuario en longitud y latitud, que se utiliza como longitud y latitud objetivo para que el usuario entregue la comida. Por lo tanto, la precisión del algoritmo GeoCoding afecta directamente la eficiencia de entrega del usuario. Actualmente, el mapeo de los documentos de direcciones de pedidos en longitud y latitud se implementa a través de la interfaz AutoNavi GeoCoding. Dado que la interfaz AutoNavi GeoCoding proporciona una función de geocodificación general, el efecto de reconocimiento de los pedidos realizados en escenarios de comida para llevar no es perfecto en muchos casos. Se refleja en los siguientes aspectos:
Basado en el status quo anterior, diseñamos e implementamos un conjunto de algoritmos de inversión de direcciones para escenarios de comida para llevar, que llamamos NGC (NewGeoCoding). La función principal de NGC es vincular las dos direcciones completadas por el usuario al registro de PDI con el grado de coincidencia más alto en la base de datos de PDI, y luego usar la longitud y latitud del PDI como la longitud y latitud de la solución inversa de dirección. . El algoritmo tiene los siguientes requisitos:
El proceso general de NGC incluye tres pasos principales: fusionar dos direcciones, obtener PDI similares circundantes y hacer coincidir direcciones con los PDI circundantes:
El usuario es Al realizar un pedido en Ele.me, la dirección es una dirección de dos partes. Lo ideal es que la dirección de dos partes sea clara, precisa y complementaria entre sí. Sin embargo, ya que la segunda parte de la dirección se completa manualmente. por el usuario no está restringido, el usuario puede completarlo a voluntad. Esto ha generado una serie de problemas de direcciones, incluidos conflictos y duplicaciones entre las dos direcciones, diferentes expresiones para una misma comunidad o edificio y el orden de las físicas. Los componentes de la dirección están invertidos y son confusos. Por lo tanto, primero debemos fusionar las dos direcciones en una que sea completa, razonable, libre de ambigüedades y contradicciones, que no contenga contenido repetido y que sea clara y organizada. Consulte el ejemplo a continuación.
A continuación, utilizamos / para representar dos direcciones de texto, como "Ele.me/No. 27 Building Materials Chengzhong Road", lo que significa que la primera dirección es "Ele.me" y la La segunda dirección es "Materiales de construcción" No. 27, Chengzhong Road".
El contenido duplicado de dos direcciones es el primer problema que debe abordarse al fusionar dos direcciones. La duplicación de contenido tiene varios niveles de significado:
Después del preprocesamiento anterior, tenemos. completado Para detectar contenido duplicado, el siguiente paso es cómo unir dos párrafos de dirección. Según la observación, resumimos cuatro formas de unir dos párrafos de texto: continuo, inclusivo, descriptivo e insertado.
La dirección heredada se refiere a la relación entre las dos direcciones de mayor a menor en la estructura de la entidad de dirección. Por ejemplo, "Edificio 24/Unidad 2, 302, Guanzhuang Xili", las dos direcciones de frente a. atrás están "Comunidad/Nº de edificio/Nº de unidad/Nº de habitación". En este caso, solo necesita unir las dos direcciones en secuencia.
La dirección inclusiva se refiere a la situación en la que una de las dos direcciones contiene la otra dirección. En este caso, simplemente use la dirección más larga.
La dirección descriptiva significa que la primera dirección es un PDI y la segunda dirección es una descripción de la ubicación del PDI, como "Wushan Grilled Fish/Singularity Center 3, No. 1, Changjiang Street , Edificio del distrito de Changping ". Para este tipo de dirección, las posiciones de las dos direcciones deben intercambiarse. La segunda dirección está al frente y la primera dirección está detrás. La combinación forma "Pescado a la parrilla de Wushan, tercer piso, singularidad Centro, No. 1, Calle Changjiang, Distrito Changping."
La dirección insertada significa que el primer segmento de la dirección debe insertarse en una posición determinada del segundo segmento de la dirección. Por ejemplo, "Edificio Xinda/No. 1399, Beijing West Road, 3rd. "El piso" debe ser "Edificio Xinda". " se inserta entre "No. 1399, Beijing West Road" y "3er piso" para formar "3er piso, Edificio Xinda, No. 1399, Beijing West Road".
De esta manera, hemos completado el proceso de fusionar dos direcciones en una sola.
La obtención de puntos de interés cercanos similares se basa en la longitud, la latitud y el texto de la dirección del pedido del usuario. La búsqueda de los datos de los N puntos de interés principales con la mayor similitud a su alrededor es un proceso de selección aproximado. Después de obtener estos N registros, se realizará una puntuación de similitud más precisa más adelante.
Primero calculamos la grilla GeoHash con una precisión de 7 donde se ubica la latitud y longitud del orden actual, junto con las ocho grillas vecinas circundantes, hasta 9 grillas. Preprocese los datos de poi y guárdelos en ElasticSearch Primero, filtre los datos de poi de 9 cuadrículas GeoHash y luego use el método ES Match para obtener los N registros principales entre ellos para su posterior vinculación de poi. Si la vinculación de poi falla, expandiremos el rango de la cuadrícula a una precisión de 6 y continuaremos buscando. Si la vinculación aún falla, continuaremos expandiéndonos a toda la ciudad y devolveremos el resultado final coincidente, o nulo. Por lo tanto, el proceso de búsqueda es un proceso de expansión capa por capa, que puede mejorar la precisión de la vinculación y reducir el impacto de los puntos de interés con el mismo nombre en la misma ciudad.
Ahora que tenemos el texto de la dirección del pedido fusionado y los registros de N PDI con la mayor similitud a su alrededor, necesitamos calcular a qué registro de PDI es más adecuado vincular el texto de la dirección.
Este proceso se divide en dos pasos. El primer paso es extraer posibles nombres de PDI del texto de la dirección del pedido. Para un pedido, se extraerán varios nombres de PDI de diferentes dimensiones, como "Chaoyangmen Nei Street". 15 No. 401, Unit 2, Building 91, R&F Community", se pueden extraer los siguientes nombres de puntos de interés candidatos:
No. 15, Chaoyangmennei Street
No. 15, R&F Community , Calle Chaoyangmennei
Edificio 91, Comunidad R&F
Unidad 2, Edificio 91, Comunidad R&F
Comunidad R&F
Tomamos estos candidatos Nombres de puntos de interés y compárelos con las áreas circundantes. N puntos de interés coinciden y la dirección de punto de interés con la puntuación más alta se calcula como resultado vinculante final. El proceso de puntuación se basa principalmente en dos aspectos: por un lado, analiza la similitud del nombre entre el PDI candidato y el PDI circundante. Cuanto mayor es la similitud, mayor es la puntuación; de las entidades contenidas en el propio PDI candidato. Cuanto más ricos sean los detalles, mayor será la puntuación.