【问题标题】:Extract date/duration from text in Python从 Python 中的文本中提取日期/持续时间
【发布时间】:2021-01-06 17:54:00
【问题描述】:

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

“每两周检查一次” - 两周

“在第 1 天和第 14 天检查它” - 第 1 天和第 14 天

“第 19 天和第 14 天很重要”- 第 19 天,第十四天

“在第 11 天和第 14 天检查” - 第 11 天、第 14 天

“在第一天和十二天检查” - 第一天,第十二天

我曾尝试使用 SUTime 库来提取必要的信息,但它仅适用于第一个示例,无法从其余示例中正确提取信息。考虑到可以编写相同文本的多种方式,使用正则表达式不太可行。这个问题还有其他解决方案吗?

【问题讨论】:

  • 似乎需要自然语言处理。查看 NLTK:nltk.org.

标签: python python-3.x date text nlp


【解决方案1】:

这是一个很好的问题,因为如果您真的想确保每次提到一天或持续时间,您最终可能会使用机器学习,因为这样您的程序可以被训练来识别诸如“每两周一次”或“每两年一次”,这不是数值。但是,我认为对于这样的事情,采用不需要太多编码和努力的方法可能更明智。首先,根据您在此处显示的内容判断,您的程序应该识别“每 n 天/周”和“检查第 n 天和 m 天”(n 和 m 代表那里的任意数字)。首先,我建议使用words2num Python Library 将任何文本(如示例中的“十四”)转换为整数。您可能需要使用正则表达式来解析文本 - 但仅限于单词。数字可以通过使用 split() 内置函数找到,通过分隔符将字符串拆分为单词的子字符串,在这里可以使用空格。然后您可以使用isdigit() 函数查看它是否为整数,然后应用您的规则。

我意识到这些不是分步说明,而是一种选择。如果您真的想提高效率,那么自然语言或机器学习将是最好的选择,但如果您愿意,您可以使用基本解析和正则表达式来管理。

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2020-11-26
    • 2020-10-22
    • 2014-11-16
    相关资源
    最近更新 更多