Python中的日期提取

数据挖掘 Python 文本挖掘
2021-09-15 14:14:52

我想从给定文档中提取所有日期信息。本质上,我想这可以通过很多正则表达式来完成:

  • 2019-02-20
  • 20.02.2019(“德语格式”)
  • 02/2019(“2019 年 2 月”)
  • "明天" (datetime.timedelta(days=1))
  • "昨天" (datetime.timedelta(days=-1))

是否有提供此功能的 Python 包/库,还是我必须自己编写所有这些正则表达式/逻辑?

我对从德语和英语文本中提取信息感兴趣。不过主要是德语。

约束

我现在还没有完整的数据集,但我对此有所了解:

  • 可能在数据集中的 10 年有趣的日期
  • 我想有趣的日期类型是:(1)28.02.2019,(2)相对日期,如“3天前”(3)28/02/2019,(4)02/28/2019(5)2019-02- 28 (6) 2019/02/28 (7) 2019/28/02 (8) 28.2.2019 (9) 28.2 (10) ... -- 所有这些都可以在不同的地方有空间
  • 我有数以百万计的文件。我猜每个文件大约有 20 个句子。
  • 大部分数据是德语
2个回答

斯坦福 CoreNLP 对日期/时间有一个非常好的 NER 实现。

https://nlp.stanford.edu/software/sutime.html (演示:http ://nlp.stanford.edu:8080/sutime/process )

在此处输入图像描述

虽然这是用 Java 编写的,但这个库有很多 Python 包装器(例如:https ://github.com/FraBle/python-sutime )。此类库列表:https ://stanfordnlp.github.io/CoreNLP/other-languages.html

Spacy ( https://spacy.io ) 带有英语和德语语言模型。

根据文档,它的 NER 适用于绝对日期和相对日期。https://spacy.io/usage/linguistic-features#section-named-entities