Moja firma ma klienta, który śledzi ceny produktów różnych firm w różnych lokalizacjach. Informacje te trafiają do bazy danych.Algorytmy lub wzorce do czytania tekstu
Firmy te wysyłają e-mailem ceny do naszego klienta każdego dnia i oczywiście wszystkie e-maile są sformatowane inaczej. Niemożliwe jest, aby jakakolwiek firma zmieniła swój format - nie zrobią tego.
Niektóre wyglądają jakby tak:
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
Inne wyglądają trochę jak ten:
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
Obecnie mamy indywidualne parser napisane dla każdego formatu e-mail firmy. Ale te formaty dość często się zmieniają. Nie możemy liczyć na to, że ceny są za każdym razem w tym samym wierszu lub kolumnie.
To jest trywialne dla nas, aby spojrzeć na e-maile i ustalić, która cena idzie z jakim produktem, w którym miejscu. Ale nie tak bardzo dla naszego kodu. Dlatego staram się znaleźć bardziej elastyczne rozwiązanie i chciałbym poznać twoje sugestie na temat tego, jakie podejścia podjąć. Jestem otwarty na wszystko, od regexu do sieci neuronowych - nauczę się, co muszę zrobić, aby to działało, po prostu nie wiem, czego potrzebuję się uczyć. Czy to jest problem lex/parsing? Bardziej podobny do OCR?
Kod nie musi samodzielnie formułować formatów. E-maile należą do kilku głównych "stylów", takich jak te powyżej. Naprawdę potrzebujemy, aby kod był wystarczająco elastyczny, aby nowa linia produktów lub biała spacja nie powodowały, że plik był nieopisywalny.
Dzięki za wszelkie sugestie dotyczące tego, od czego zacząć.
Byłoby pomocne, aby zobaczyć, jak analizować jeden z tych formatów już teraz. Ktoś może być w stanie wziąć twój istniejący kod i wskazać, gdzie można go uelastycznić. –
Obecny kod to w zasadzie: jeśli firma jest firmą1, przejdź do trzeciej linii, przeczytaj pierwsze 12 znaków jako produkt, a następnie odczytaj znaki 45-50 jako cenę. Następnie przejdź do czwartej linii ... To bardzo, bardzo trudne kodowanie. –
@Scott, Ok, jeśli białe spacje rozdzielają dane na kolumny tak, jak opisuję w mojej odpowiedzi, możesz wygodnie używać skryptów. – nik