Представьте себе, что кто-то отправляет вам такую почту каждый день:
Пример 1:
"Мой расход топлива вчера составлял XXX литров, мое расстояниепроехал YYY км / миль, моя средняя скорость вчера ZZZ км / миль в час "
Пример 2:
" Используется двигатель XXXлитров топлива вчера, автомобиль проехал YYY километров вчера (+3 километра после 12 часов, но это было технически сегодня), средняя скорость автомобиля вчера составляет ZZZ километров в час "
Можнобыть больше значений в почту, до 5 значений (в этом примере их 3).
Задача состоит в том, чтобы извлечь из почты значения XXX,YYY and ZZZ
(и больше, когда их больше).Конечно, почта набирается вручную, поэтому каждое письмо имеет свой вид.
Вопрос в том, как это сделать?Любая (серьезная) идея приветствуется, я выскажу свои мысли об этом ниже:
Я думал, что Keras (или любая другая) нейронная сеть может сделать эту работу.Я попытался сделать так, чтобы каждое письмо было представлено пустым вектором с помощью keras.preprocessing.text.one_hot()
и обучил его нейронной сети со следующей структурой:
- EmbeddingLayer
- 1DConvLayer с Reluактивация
- MaxpoolLayer
- DropoutLayer
- FlattenLayer
- DenseLayer с активацией Relu
- DropoutLayer
- Плотный слой с линейной активацией
Для приведенных выше примеров будет 3 выходных нейрона, где каждый нейрон должен предсказать значение, например, первый выходной нейрон должен выводить XXX, второй нейрон YYY и т. Д.
Использование оптимизатора Адама и MSE в качестве потери, это делает плохую работу.MSE, кажется, сходится к довольно большому значению, и прогнозы далеко не верны.Какая структура имеет лучшую смену успеха?
Должен ли я использовать совершенно другой вывод?например, нейронная сеть выводит: «шестое слово - это расход топлива».
Должен ли я использовать радикально другой подход без нейронной сети вообще?Что будет работать тогда?
Пример сообщения с выходом нейронной сети.Почтовое сообщение:
- Cargo quantity, B/L mt: 0
- ME Fuel consumption mt: 8,9
- Total fuel consumption mt: 15
- Draught m: 6,65
- Date: 2018-07-04 07:00
- Timezone: 2018-07-04 07:00 W. Europe Standard Time
- ROB MGO: 510,3
- Distance, 127
Нейронная сеть Выход:
- Дата: 2018-09-12T15: 02: 28
- Часовой пояс: 545,405
- ROB MGO: -1876,67
- Груз: 23714,6
- Осадка: 0,394458
- Разгрузка груза: 9,97439e + 06
- Грузоподъемность: 9,87113e + 06
Желаемый выход:
- Дата: 2018-04-07T07: 00: 00
- Часовой пояс: + 1
- ROB MGO: 510,3
- Груз: 0
- Осадка: 6,65
- Разгрузка груза: 99999999
- Грузовая нагрузка: 99999999
Часовой пояс представляет разницу по отношению к UTC, в этом случае +1, Разгрузка груза и Загрузка груза не присутствуют в почте,поэтому они должны вывести 99999999, что означает «нет».Даты сначала преобразуются в метки времени, поэтому нейронная сеть выводит метку времени.