Mi empresa tiene un cliente que realiza un seguimiento de los precios de productos de diferentes compañías en diferentes ubicaciones. Esta información va a una base de datos.Algoritmos o patrones para leer texto
Estas compañías envían los precios por correo electrónico a nuestros clientes todos los días, y por supuesto, todos los correos electrónicos tienen un formato diferente. Es imposible que ninguna de las empresas cambie su formato; no lo harán.
Algunos parecen algo así como esto:
This is example text that could be many lines long... Location 1 Product 1 Product 2 Product 3 $20.99 $21.99 $33.79 Location 2 Product 1 Product 2 Product 3 $24.99 $22.88 $35.59
otros buscan algo así como esto:
PRODUCT PRICE +/- ------------ -------- ------- Location 1 1 2007.30 +048.20 2 2022.50 +048.20 Maybe some multiline text here about a holiday or something... Location 2 1 2017.30 +048.20 2 2032.50 +048.20
Actualmente contamos con programas de análisis individuales escritos para el formato de correo electrónico de cada empresa. Pero estos formatos cambian con bastante frecuencia. No podemos contar con que los precios estén en la misma fila o columna cada vez.
Es trivial para nosotros mirar los correos electrónicos y determinar qué precio va con qué producto y en qué ubicación. Pero no tanto por nuestro código. Así que estoy tratando de encontrar una solución más flexible y me gustaría recibir sus sugerencias sobre qué enfoques tomar. Estoy abierto a cualquier cosa, desde regex a redes neuronales. Aprenderé lo que necesito para que esto funcione, simplemente no sé lo que necesito aprender. ¿Es esto un problema de lex/análisis? ¿Más similar a OCR?
El código no tiene que resolver los formatos por sí mismo. Los correos electrónicos caen en algunos 'estilos' principales como los de arriba. Realmente necesitamos que el código sea lo suficientemente flexible como para que una nueva línea de productos o espacios en blanco o algo así no haga que el archivo no sea analizable.
Gracias por cualquier sugerencia sobre por dónde empezar.
Sería útil ver cómo está analizando uno de estos formatos en este momento. Alguien podría ser capaz de tomar su código existente y señalar dónde se puede hacer más flexible. –
El código actual es básicamente: si la empresa es company1, vaya a la tercera línea, lea los primeros 12 caracteres como producto, luego lea los caracteres 45-50 como precio. Luego vaya a la cuarta línea ... Es muy, muy difícil de codificar. –
@Scott, Ok, si el espacio en blanco está separando los datos en columnas como lo describo en mi respuesta, podría usar secuencias de comandos cómodamente. – nik