将所有 nlp 实体提取到另一列

Extracting all nlp entities to another column

我正在尝试将所有实体提取到数据集中的另一列。

我已经在我的完整数据集的一小部分上尝试了下面的这段代码并且它有效,但是一旦我放入我的整个数据集,我就会收到以下错误:

TypeError: 'float' 类型的对象没有 len()

def all_ents(v):
    return [(ent.text, ent.label_) for ent in nlp(v).ents]

dt['Entities'] = dt['text'].apply(lambda v: all_ents(v))

有人能帮忙吗?提前致谢!

您的 text 列包含一些浮点值或 np.nans。

将该列的所有值都转换为字符串会更安全:

dt['Entities'] = dt['text'].astype(str).apply(lambda v: all_ents(v))
#                          ^^^^^^^^^^^^