从Python中的文本中提取日期/持续时间



要提取的文本和输出类似于以下内容:

"每两周检查一次"-两周

"在第1天和第14天检查"-第1天和第14天

"第19天和第14天是重要的"-第19天,第14天

"在第11天和第14天检查"-第11天、第14天

"在第一天和第十二天检查"-第一天,第十二天

我曾经尝试过使用SUTime库来提取必要的信息,但它只适用于第一个例子,无法正确地从其他例子中提取信息。考虑到可以用多种方式编写相同的文本,使用ReGex不是很可行。这个问题还有其他解决办法吗?

这是一个很好的问题,因为如果你真的想确保你每次提到一天或持续时间,你可能会使用机器学习,因为这样你的程序就可以被训练来识别短语,比如";每两周";或";每两年";,它们不是数值。然而,我认为对于这样的事情,选择一种不需要太多编码和精力的方法可能更明智。首先,从你在那里展示的内容来看,你的程序应该识别出";每n天/周";以及";在第n天和第m天进行检查;(n和m表示任意数(。首先,我建议使用words2num Python库来转换任何文本,比如";十四";在您的示例中,转换为一个整数。可能需要使用正则表达式来解析文本,但仅限于单词。只需使用split()内置函数,通过分隔符将字符串拆分为单词的子字符串,就可以找到数字,这里可以使用空格。然后您可以使用isdigit()函数来查看它是否是一个整数,然后应用您的规则。

我意识到这些并不是循序渐进的指示,而是一种选择。如果你真的想让它变得高效,那么自然语言或机器学习将是最好的选择,但如果你愿意,你可以使用基本的解析和Regex。

最新更新