从Python文本中提取日期/持续时间
要提取的文本和输出类似于以下内容: “每两周检查一次”-两周 “第1天和第14天检查”-第1天和第14天 “第19天和第14天很重要”-第19天,第14天 “在第11天和第14天检查”-第11天,第14天 “第一天和第十二天检查”-第一天,第十二天从Python文本中提取日期/持续时间,python,python-3.x,date,text,nlp,Python,Python 3.x,Date,Text,Nlp,要提取的文本和输出类似于以下内容: “每两周检查一次”-两周 “第1天和第14天检查”-第1天和第14天 “第19天和第14天很重要”-第19天,第14天 “在第11天和第14天检查”-第11天,第14天 “第一天和第十二天检查”-第一天,第十二天 我曾尝试使用SUTime库提取必要的信息,但它仅适用于第一个示例,无法从其余示例中正确提取信息。考虑到同一文本可以用多种方式编写,使用正则表达式不是很可行。这个问题还有其他解决方案吗?这是一个好问题,因为如果你真的想确保每天或每段时间都能记住,那么你
我曾尝试使用SUTime库提取必要的信息,但它仅适用于第一个示例,无法从其余示例中正确提取信息。考虑到同一文本可以用多种方式编写,使用正则表达式不是很可行。这个问题还有其他解决方案吗?这是一个好问题,因为如果你真的想确保每天或每段时间都能记住,那么你可能最终会使用机器学习,因为这样你的程序就可以被训练识别“每两周”或“每两年”之类的短语,这些不是数值。然而,我认为,对于这样的事情,采用一种不需要太多编码和工作的方法可能更明智。首先,您的程序应该根据显示的内容识别“每n天/周”和“检查n天和m天”(n和m代表任意数字)。首先,我建议使用将任何文本(如示例中的“十四”)转换为整数。您可能需要使用正则表达式来解析文本,但仅限于单词。只需使用
split()
builtin,通过分隔符将字符串拆分为单词的子字符串,就可以找到数字,这里可以使用空格。然后可以使用isdigit()
函数查看它是否为整数,然后应用规则
我意识到这些不是一步一步的说明,而是一种选择。如果你真的想提高效率,那么自然语言或机器学习将是最好的选择,但如果你愿意,你可以使用基本的语法分析和正则表达式。似乎需要自然语言处理。查看NLTK:。