使用Python3识别以自然语言编写的日期

我们在公司创建的服务可从客户和客户的通信中提取法律事实。 该服务源于一个简单的想法-我的固定客户决定简化经理的工作并创建“合同生成器”。 我们的第一个任务-将客户和客户的详细信息纳入合同中,我们轻松决定。

第二个想法出现了-在信函中查找日期并将其自动插入到职责范围中,即文档。

但是,人们很少在聊天和即时通讯程序中写日期,以便算法可以轻松识别它们。

“我们下周开始”,“这个星期五”-如果经理相对容易学习如何以正确的格式写日期,那么您就不能对客户提出这样的要求。

我用python编写,并且python立即进入了救援NLP库spaCy *-NER(名称实体识别)模块,该模块可以轻松地从与英语客户的通信中检索日期。 结果,我们得到了一堆相对日期:“两周内”,“星期五”,“这个星期五”,“今天中午”,“星期二中午”。

但是如何将这些日期转换为服务可以感知的对象(datetime对象)?
在“人类可读的日期解析”领域开始了漫长的旅程。 观察周围的环境,我发现只有三个可以立即运行且不受折磨的python库:timefhuman **,dateparser ***和datefinder ***。

图为三个库的比较:

图片

总的来说,很明显,尽管有很多误报,但与大多数人使用的dateparser相比,时光人更容易使用,而不会被注意力所破坏。
开发人员解析“星期五”的有趣逻辑是,在timefhuman情况下给出了未来的星期五,而在日期解析器中给出了最后一个星期五。

总的来说,timefhuman更加活跃,因此被选择用于原型的进一步开发和测试。

* spacy.io
** github.com/alvinwan/timefhuman
*** github.com/scrapinghub/dateparser
**** github.com/akoumjian/datefinder

Source: https://habr.com/ru/post/zh-CN449184/


All Articles