He trabajado mucho en este tipo de análisis. Debido a que hay errores, no obtendrá una precisión del 100 %, pero hay algunas cosas que puede hacer para lograr la mayor parte del camino y luego hacer una prueba visual de BS. Esta es la forma general de hacerlo. No es código, porque es bastante académico escribirlo, no hay rarezas, solo mucho manejo de cadenas.
(Ahora que ha publicado algunos datos de muestra, he realizado algunos cambios menores)
- Trabaje hacia atrás. Comience desde el código postal, que estará cerca del final, y en uno de los dos formatos conocidos:XXXXX o XXXXX-XXXX. Si esto no aparece, puede suponer que se encuentra en la ciudad, parte del estado, a continuación.
- Lo siguiente, antes del zip, será el estado, y estará en un formato de dos letras o como palabras. También sabes cuáles serán estos, solo hay 50 de ellos. Además, puede sondear las palabras para ayudar a compensar los errores ortográficos.
- antes de eso está la ciudad, y es probablemente en la misma línea que el estado. Podría usar una base de datos de códigos postales para verificar la ciudad y el estado según el código postal, o al menos usarlo como detector de BS.
- La dirección de la calle generalmente será de una o dos líneas. La segunda línea generalmente será el número de suite, si lo hay, pero también podría ser un apartado de correos.
- Va a ser casi imposible detectar un nombre en la primera o segunda línea, aunque si no tiene el prefijo de un número (o si tiene el prefijo "atención:" o "atención a:" podría darle una pista sobre si es un nombre o una línea de dirección.
Espero que esto ayude un poco.