Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从聊天机器人的输入文本中提取日期?_Python_Date_Chatbot - Fatal编程技术网

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,因为它可以识别

我正在用python构建一个聊天机器人。我需要从用户输入的文本中提取日期。一些测试用例可以如下所示:

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"

一般来说,当聊天机器人无法从文本中提取日期时,您可能希望聊天机器人以更易于检测的格式专门请求日期。

基本上,您请求的是完整的聊天机器人。这正是该机器人的想法,用于构建自动识别器。作为起点,您可以尝试以下方法:……我希望我被请求太多了。好吧,酷,我会调查的。我会继续我正在做的。