2009-07-01 27 views
5

Estoy buscando consejos sobre la entrada de análisis de un usuario en múltiples combinaciones de ciudad/estado/código postal/país.Análisis de entrada de usuario - ciudad/estado/código postal/país

Un ejemplo común sería lo que hace Google maps.

Algunos ejemplos de entrada serían:

  • "Ciudad, Estado, País"
  • "Ciudad, País"
  • "ciudad, código postal, país"
  • "Ciudad, Estado , el código postal"
  • 'código postal'

¿Cuál sería una forma eficaz y correcta a pa ¿Esta entrada de un usuario?

Si no está al tanto de cualquier ejemplos de implementaciones favor compartir :)

Respuesta

0

yo mismo soy muy fascinado con la forma en que Google maneja. No recuerdo haber visto nada similar en ningún otro lado.

Creo que intenta separar una cadena de entrada en palabras probando varios delímetros: espacio, coma, punto y coma, etc. Entonces tiene varias combinaciones. Para cada combinación, toma cada palabra y la compara con país, ciudad, pueblo, base de datos de código postal. Luego, define una métrica sobre cómo evaluar el resultado de la coincidencia de grupo para cada combinación. Aquí también deberían existir reglas cruzadas, como si el código postal no coincide bien, pero el país, la ciudad, la ciudad coinciden bien y en combinación hacen referencia a una dirección válida, luego la métrica arroja una calificación alta.

Es difícil y no es un ejercicio de código de tarde. También requiere fuertes recursos computacionales: un hosting compartido probablemente se descifraría en solo 10 solicitudes, pero un centro de datos podría servirlo bien.

No estoy seguro de si hay una implementación de ejemplo. Muchos servicios geográficos se ofrecen en base a pago. Algo tan sofisticado como Google Maps podría costar una fortuna.

Corrígeme si me equivoco.

1

El primer paso sería la de dividir el texto en tokens individuales utilizando espacios o comas como los caracteres que delimitan.Para la escalabilidad, puede entregar cada token a un hilo o servidor (si usa una arquitectura tipo Map-Reducer) para descubrir qué es cada token. Por ejemplo,

  • Si tenemos números en el patrón, entonces es probable que sea un código postal.
  • ¿Es el artículo en la lista de estados conocidos?
  • Los países también son bastante fáciles de manejar como los estados, hay un número limitado.
  • ¿Qué orden tienen los tokens en comparación con las formas comunes de escribir una dirección? La mayoría de las entradas probablemente seguirán la oficina postal local personalizada para formatos de direcciones.

Una vez que tenga los resultados del token individual, puede pegar las piezas nuevamente para obtener una dirección completa. En los casos en que hay preguntas, puede indicarle al usuario qué es lo que en realidad quieren decir (como los mapas de Google) y agregar esa información a una lista aprendida.

El método más fácil para agregar ese soporte a una aplicación, suponiendo que no está intentando construir un sistema de mapas, es consultar a Google o Yahoo y pedirle que analice la fecha por usted.

0

Suponiendo que solo está tratando con esos cuatro campos (País de estado de Zip de ciudad), hay valores finitos para todos los campos excepto Ciudad, e incluso eso supongo que si tiene una lista de ciudades grandes también es finita. Así que solo divide cada campo por coma y luego compara con cada lista de campos.

Asumiendo que estamos hablando de Estados Unidos direcciones-

  • Zip es más evidente, así que compruebe para que en primer lugar.
  • Estado tiene opciones 50x2 (California) o CA, compruebe que el próximo
  • País tiene ~ 190x2 opciones, dependiendo de cómo abarca quieres ser (Estados Unidos, Estados Unidos, EE.UU.).
  • Lo que sobra es probablemente tu ciudad.

En lo que respecta a la eficiencia, podría tener sentido comprobar primero un puñado de formatos 'estándar', como sugiere Dan.

Cuestiones relacionadas