我有一个包含几篇新闻文章(Text_4)的数据集(df_test)。使用 SpaCy,我提取了“日期”实体。对于那些我想查看与文章的发布日期(RP_DateFormatted)相比它们是在未来还是过去(以识别引用未来事件(例如产品发布)的新闻文章)的人
我目前的代码是
for index, row in df_test.iterrows():
doc = nlp(row.Text_4)
entities = {key: list(g) for key, g in groupby(sorted(doc.ents, key=lambda x: x.label_), lambda x: x.label_)}
...一些其他步骤...然后:
ListDATE3 = [dateparser.parse(replace_all((i.text), od), languages=['en'],
settings={'RELATIVE_BASE': datetime.strptime(row.RP_DateFormatted, '%Y-%m-%d'),
'PREFER_DAY_OF_MONTH': 'last',
'PREFER_DATES_FROM': 'future'}) for i in entities['DATE']]
df_test.PY_Entities_DatesParsed[index] = ListDATE3
我对这行有疑问'PREFER_DATES_FROM': 'future',例如:文章写于 2005 年 8 月 15 日,但文中没有给出年份。SpaCy 将“Aug 15”提取为日期。dateparser 将年份设置为 2006 年(因为它在未来)。因此,我会相信新闻文章谈论的是未来——但事实并非如此。
'PREFER_DATES_FROM': 'past'如果描述了 2 月发生的事件(文本中没有给出年份),设置也无济于事。这可能是明年二月,但日期解析器会将其设置为今年的二月。
有没有办法在设置中添加 if 语句或基于 dateparser 创建一个新函数?请注意,每篇新闻文章都可以有多个日期(entities['DATE'] 是我数据框中每一行的列表)。
我正在使用 Python 3.8