- PVSM.RU - https://www.pvsm.ru -
Мы в компании создаем сервис, который извлекает юридические факты из переписки клиента и заказчика. Сервис вырос из одной простой идеи — мои постоянные клиенты из решили упросить работу менеджерам и создать “генератор договоров”. Первую задачу — подтягивать в договор реквизиты клиента и заказчика мы решили легко.
Появилась вторая идея — искать в переписке даты и вставлять их в техническое задание, документы, автоматически.
Однако, люди редко пишут в чатах и мессенджерах даты так, чтобы их легко мог распознать алгоритм.
“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***.
На картинке сравнение трех библиотек:
В целом видно, что не избалованная вниманием 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
Нажмите здесь для печати.