34 votos

¿Máquina de aprendizaje de técnicas para el análisis de cadenas?

Tengo un montón de cadenas de dirección:

1600 Pennsylvania Ave, Washington, DC 20500 USA

Quiero analizar en sus componentes:

street: 1600 Pennsylvania Ave
city: Washington
province: DC
postcode: 20500
country: USA

Pero, por supuesto, los datos está sucio: se trata de muchos países en muchos idiomas, escrita en diferentes formas, contiene faltas de ortografía, falta de piezas, tiene más basura, etc.

Ahora nuestro enfoque es el uso de reglas combinado con fuzzy nomenclátor de coincidencia, pero nos gustaría explorar técnicas de aprendizaje de máquina. Tenemos la etiqueta de datos de entrenamiento para el aprendizaje supervisado. La pregunta es, ¿qué tipo de máquina de problema de aprendizaje es esto? La verdad es que no parecen ser de agrupación o clasificación o regresión....

El más cercano que se me ocurre sería la clasificación de cada token, pero entonces usted realmente desea clasificar a todos ellos simultáneamente, la satisfacción de restricciones como "no debe haber más de un país"; y realmente hay muchas maneras de convertir una cadena, y quieres probar cada uno y elegir el mejor.... Sé que existe una cosa que se llama estadística en el análisis, pero no se sabe nada sobre él.

Así que: ¿la máquina de aprendizaje de las técnicas de estudio para el análisis de direcciones?

10voto

Utnap Puntos 38

Esto puede ser visto como una secuencia de etiquetado problema, en el que tenemos una secuencia de tokens y quieres darle una clasificación para cada uno de ellos. Usted puede utilizar modelos ocultos de Markov (HMM) o condicional campos aleatorios (CRF) para resolver el problema. Hay buenas implementaciones de HMM y CRF en un open-source paquete llamado Mazo.

En tu ejemplo, debe convertir la entrada para el siguiente formato. Por otra parte, debe generar extra-características.

1600 STREET
Pennsylvania STREET
Ave STREET
, OUT
Washington CITY
, OUT
DC PROVINCE
20500 POSTCODE
USA COUNTRY

1voto

Neal Puntos 316

Esto es un poco de un hack que no requiere de su propia solución: geocodificación inversa. Esto puede dar limpiador de datos o realmente hace todo el trabajo para usted.

Por ejemplo, he aquí algunas de Stata código de con geocode3 de la CSS, que utiliza Google. Supongo que esto es similar a la Difusa de Nomenclátor. La primera dirección es bastante desordenado, la segunda está limpio, y la tercera es extranjera. Otro software puede manejar esto es así.

clear
set obs 3
gen address =""
replace address = "Big Foot Museum in Felton CA" in 1
replace address = "1600 Pennsylvania Ave, Washington, DC 20500 USA" in 2 
replace address = "ул. Ильинка, д. 23 103132, Москва, Россия" in 3
geocode3, address(address)
gen coord = string(g_lat) + "," + string(g_lon)
geocode3, reverse coord(coord)

Esto funciona razonablemente bien:

. list r_addr , clean noobs

                                                                             r_addr  
                                      121 San Lorenzo Avenue, Felton, CA 95018, USA  
    1600 Pennsylvania Avenue Northwest, President's Park, Washington, DC 20500, USA  
                                         ulitsa Ilyinka, 23, Moscow, Russia, 101000  

El Kremlin tiene un bonito formato diferente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X