Python 如何从聊天机器人的输入文本中提取日期?
我正在用python构建一个聊天机器人。我需要从用户输入的文本中提取日期。一些测试用例可以如下所示:Python 如何从聊天机器人的输入文本中提取日期?,python,date,chatbot,Python,Date,Chatbot,我正在用python构建一个聊天机器人。我需要从用户输入的文本中提取日期。一些测试用例可以如下所示: 1."last week of july" 2." in june" 3. "last month" 4. "last n days" 这些只是一个样本。提取日期后,我需要在sql中构建一个查询。我有几例热编码。但当我思考时,越来越多的情况出现,热编码可能会很耗时。有没有内置的图书馆可以减轻我的工作? < P>我会考虑使用NLP API,如OR。就个人而言,我更喜欢Wit.ai,因为它可以识别
1."last week of july"
2." in june"
3. "last month"
4. "last n days"
这些只是一个样本。提取日期后,我需要在sql中构建一个查询。我有几例热编码。但当我思考时,越来越多的情况出现,热编码可能会很耗时。有没有内置的图书馆可以减轻我的工作? < P>我会考虑使用NLP API,如OR。就个人而言,我更喜欢Wit.ai,因为它可以识别日期和日期范围,还可以接受上下文,允许您根据用户的时区调整识别(这可以为您节省很多麻烦-取决于它在用户时区的时间,“周三”或“下周”可以有不同的解释).您可以使用该库 导入日期分析器 nl_日期=[“7月最后一周”、“6月”、“上月”、“最后n天”] 对于nl_日期中的nl_日期: res=dateparser.parse(nl_日期) 如果有的话: 打印(“{}”“:{}.”格式(nl_日期,res.date()) “六月”:2019-06-12 “上个月”:2019-05-12 此库将能够正确处理4个示例中的2个。此外,您可能会发现使用NER(命名实体识别)模型很有帮助,它提供了一个:
import spacy
nlp = spacy.load("en_core_web_sm")
nl_dates = ["last week of july", " in june", "last month", "last 7 days"]
for nl_date in nl_dates:
doc = nlp(nl_date)
for entity in doc.ents:
print('{}: {}'.format(entity.label_, entity.text))
"DATE: last week"
"DATE: last month"
"DATE: last 7 days"
一般来说,当聊天机器人无法从文本中提取日期时,您可能希望聊天机器人以更易于检测的格式专门请求日期。基本上,您请求的是完整的聊天机器人。这正是该机器人的想法,用于构建自动识别器。作为起点,您可以尝试以下方法:……我希望我被请求太多了。好吧,酷,我会调查的。我会继续我正在做的。