gpt4 book ai didi

python - “后天”在 Python 的 parsedatetime 库中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 05:09:18 27 4
gpt4 key购买 nike

我正在使用 Python 的 parsedatetime 库从自然语言进行日期时间解析。它将自然语言解析为许多场景的日期时间。例如 下周一下午 5 点、`下个月等。

但是当用自然语言给出后天前天时,它不理解。

例如,“后天”获取明天的日期时间。

这是代码片段:

from datetime import datetime
import parsedatetime as pdt

plain_text='day after tomorrow' # Natural Language input

str_parsed_date_time = ''
cal = pdt.Calendar()
now = datetime.now()
for time_string in [plain_text]:
parsed_date_time = (cal.parseDT(time_string, now)[0])
str_parsed_date_time = datetime.strftime(parsed_date_time, '%Y-%m-%d %H:%M:%S') # Convert date time to string
print(str_parsed_date_time)

今天的日期是 2017 年 4 月 18 日 (2017-04-18)

库输出 2017-04-19 而不是 2017-04-20

可能是什么原因?

最佳答案

parsedatetime 期望在其单位前面有一个数量。所以它将成功解析类似后天的内容,但不会解析后天

测试代码:

import parsedatetime as pdt

test_text = [
'day after tomorrow',
'the day after tomorrow',
'a day after tomorrow',
'an day after tomorrow',
'one day after tomorrow',
'two day after tomorrow',
]

cal = pdt.Calendar()
for time_string in test_text:
result = cal.nlp(time_string)[0]
print("Got: %s from:'%s' original:'%s'" % (
result[0].date(), result[-1], time_string))

结果:

Got: 2017-04-20  from:'after tomorrow'  original:'day after tomorrow'
Got: 2017-04-20 from:'after tomorrow' original:'the day after tomorrow'
Got: 2017-04-21 from:'a day after tomorrow' original:'a day after tomorrow'
Got: 2017-04-21 from:'an day after tomorrow' original:'an day after tomorrow'
Got: 2017-04-21 from:'one day after tomorrow' original:'one day after tomorrow'
Got: 2017-04-22 from:'two day after tomorrow' original:'two day after tomorrow'

请注意,在前两个结果中,from 字符串与original 字符串不匹配,因为返回的字符串是解析时使用的字符串,而parsedatetime 确实识别了 day 的单位,因此忽略了它。

关于python - “后天”在 Python 的 parsedatetime 库中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com