- PVSM.RU - https://www.pvsm.ru -

Распознавание дат, написанных естественным языком, средствами Python3

Мы в компании создаем сервис, который извлекает юридические факты из переписки клиента и заказчика. Сервис вырос из одной простой идеи — мои постоянные клиенты из решили упросить работу менеджерам и создать “генератор договоров”. Первую задачу — подтягивать в договор реквизиты клиента и заказчика мы решили легко.

Появилась вторая идея — искать в переписке даты и вставлять их в техническое задание, документы, автоматически.

Однако, люди редко пишут в чатах и мессенджерах даты так, чтобы их легко мог распознать алгоритм.

“We start next week”, «this friday» — если менеджеры сравнительно легко могут нучиться писать даты в правильном формате, то к клиентам ты не можешь предъявить таких требований.

Я пишу на python и на помощь сразу пришла python NLP-библиотека spaCy* — NER (name entity recognition) модуль которой легко извлекал даты из переписки с англоязычными клиентами. В результате мы получили кучу относительных дат: «in two weeks»,«friday», «this friday», «this noon», «wensday noon».

Но как перевести эти даты в объекты, которые воспринимает сервис (datetime object)?
Началось длительное путешествие в область “human readable dates parsing”. Обозревая окрестности я нашел только три python библиотеки, которые заработали сразу и без мучений: это timefhuman**, dateparser*** и datefinder***.

На картинке сравнение трех библиотек:

image

В целом видно, что не избалованная вниманием timefhuman оказалась более удобной, хотя и с большим количеством ложных срабатываний, чем dateparser которым пользуется большинство.
Интересна логика разработчиков парсинг “пятницы” дал будущую пятницу в случае timefhuman и прошлую пятницу в dateparser.

В целом timefhuman оказался более живым и был выбран для дальнейшей разработки и тестирования прототипа.

* spacy.io [1]
** github.com/alvinwan/timefhuman [2]
*** github.com/scrapinghub/dateparser [3]
**** github.com/akoumjian/datefinder [4]

Автор: MutuLawyer

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/315549

Ссылки в тексте:

[1] spacy.io: https://spacy.io/

[2] github.com/alvinwan/timefhuman: https://github.com/alvinwan/timefhuman

[3] github.com/scrapinghub/dateparser: https://github.com/scrapinghub/dateparser

[4] github.com/akoumjian/datefinder: https://github.com/akoumjian/datefinder

[5] Источник: https://habr.com/ru/post/449184/?utm_campaign=449184