我有一系列社交媒体评论,我想根据他们对日期的引用来探索这些评论。为此,我使用 SpaCy 的命名实体识别器来搜索DATE
实体。df_test
我在该列下调用的 pandas 数据框中有评论comment
。我想dates
在这个数据框中添加一个新列,其中包含在每个评论中找到的所有日期实体。有些评论不会有任何日期实体,在这种情况下None
应该在此处添加。例如:
comment
'bla bla 21st century'
'bla 1999 bla bla 2022'
'bla bla bla'
应该:
comment dates
'bla bla 21st century' '21st century'
'bla 1999 bla bla 2022' '1999', '2022'
'bla bla bla' 'None'
基于他们是否可以添加在新列中找到的新 NER 标记?我尝试了一种列表方法:
date_label = ['DATE']
dates_list = []
def get_dates(row):
comment = str(df_test.comment.tolist())
doc = nlp(comment)
for ent in doc.ents:
if ent.label_ in date_label:
dates_list.append([ent.text])
else:
dates_list.append(['None'])
df_test.apply(lambda row: get_dates(row))
date_df_test = pd.DataFrame(dates_list, columns=['dates'])
但是,这会产生一个比原始数据框更长的列,例如:
comment dates
'bla bla 21st century' '21st century'
'bla 1999 bla bla 2022' '1999'
'bla bla bla' '2022'
'None'
这不起作用,因为日期条目不再与其相应的注释匹配。我知道这是因为我在所有实体中循环,但我不知道如何解决这个问题。有没有办法解决这个问题,以便我可以提取所有日期实体并以某种方式将它们连接到它们被发现的评论,以便以后分析?任何帮助深表感谢!