У моей компании есть клиент, который отслеживает цены на продукты разных компаний в разных местах. Эта информация поступает в базу данных.Алгоритмы или шаблоны для чтения текста
Эти компании каждый день посылают по электронной почте цены нашему клиенту, и, разумеется, электронные письма отформатированы по-разному. Невозможно, чтобы какая-либо из компаний изменила свой формат - они этого не сделают.
Некоторые выглядят вроде этого:
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
Другие смотрят вроде этого:
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
В настоящее время у нас есть отдельные парсеры, написанные для электронной почты формата каждой компании. Но эти форматы немного меняются довольно часто. Мы не можем рассчитывать на то, что цены будут в одной строке или столбце каждый раз.
Это тривиально для нас, чтобы посмотреть электронные письма и определить, какая цена идет с каким продуктом в каком месте. Но не столько для нашего кода. Поэтому я пытаюсь найти более гибкое решение и хотел бы получить ваши предложения о том, какие подходы предпринять. Я открыт для чего-либо из регулярного выражения в нейронные сети. Я узнаю, что мне нужно для выполнения этой работы, я просто не знаю, что мне нужно узнать. Является ли это проблемой lex/parsing? Больше похоже на OCR?
Код не должен самостоятельно определять форматы. Письма попадают в несколько основных «стилей», подобных тем, которые указаны выше. Нам действительно нужен код, чтобы он был достаточно гибким, чтобы новая линейка продуктов или пробелы или что-то не делали файл недоступным.
Спасибо за любые предложения о том, с чего начать.
Было бы полезно посмотреть, как вы разбираете один из этих форматов прямо сейчас. Кто-то может взять ваш существующий код и указать, где его можно сделать более гибким. –
Текущий код в основном: Если компания является компанией1, перейдите к третьей строке, прочитайте первые 12 символов в качестве продукта, а затем прочитайте символы 45-50 в качестве цены. Затем перейдите к четвертой строке ... Это очень, очень жестко закодировано. –
@Scott, Ok, если пробел разделяет данные на столбцы, как я опишу в своем ответе, вы можете использовать скрипты удобно. – nik