首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将2列格式化为元组列表(用于NER)

将2列格式化为元组列表(用于NER)
EN

Stack Overflow用户
提问于 2022-02-16 18:20:41
回答 1查看 37关注 0票数 0

我希望格式化df中保存的数据,以便它可以在NER模型中使用。我从2列中的数据开始,示例如下:

代码语言:javascript
运行
复制
df['text']           df['annotation']
some text            [('Consequence', 23, 47)]
some other text      [('Consequence', 33, 46), ('Cause', 101, 150)] 

并需要将其格式化为:

代码语言:javascript
运行
复制
TRAIN_DATA = [(some text, {'entities': [(23, 47, 'Consequence')]}), (some other text, {'entities': [(33, 46, 'Consequence'), (101, 150, 'Cause')]})

我一直试图迭代每一行,例如尝试:

代码语言:javascript
运行
复制
TRAIN_DATA = []
    
for row in df['annotation']: 
    entities = []
    label, start, end = entity
    entities.append((start, end, label))
    
    # add to dataset
    TRAIN_DATA.append((df['text'], {'entities': entities}))

但是,我不能让它迭代每一行来填充TRAIN_DATA。有时注释列中有多个实体。

如果有人能强调我哪里出了问题,以及如何纠正它,我非常感激!

EN

回答 1

Stack Overflow用户

发布于 2022-02-16 18:25:17

您可以使用zip()函数:

代码语言:javascript
运行
复制
TRAIN_DATA = [
    (t, {"entities": [(s, e, l) for (l, s, e) in a]})
    for t, a in zip(df["text"], df["annotation"])
]
print(TRAIN_DATA)

指纹:

代码语言:javascript
运行
复制
[
    ("some text", {"entities": [(23, 47, "Consequence")]}),
    (
        "some other text",
        {"entities": [(33, 46, "Consequence"), (101, 150, "Cause")]},
    ),
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71147296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档