【发布时间】:2022-06-26 00:56:58
【问题描述】:
我目前正致力于展示一些关于我的 NER 模型的表现的视觉效果。我目前拥有的数据如下所示:
counter_list = [
('Name', {'p':0.56,'r':0.56,'f':0.56}),
('Designation', {'p':0.10,'r':0.20,'f':0.14}),
('Location', {'p':0.56,'r':0.56,'f':0.56}),
('Name', {'p':0.14,'r':0.14,'f':0.14}),
('Designation', {'p':0.10,'r':0.20,'f':0.14}),
('Location', {'p':0.56,'r':0.56,'f':0.56})
]
我想消除重复项并将它们各自的值添加到每种类型中的一种。所以输出看起来像这样:
[
('Name', {'p':0.7,'r':0.7,'f':0.7}),
('Designation', {'p':0.2,'r':0.4,'f':0.28}),
('Location', {'p':1.12,'r':1.12,'f':1.12})
]
我曾尝试使用 reduce 函数,但它只为我提供了“名称”条目的输出。
result = functools.reduce(lambda x, y: (x[0], Counter(x[1])+Counter(y[1])) if x[0]==y[0] else (x[0],x[1]), counter_list)
什么是正确的方法?我正在尝试使用最终结果创建一些视觉效果,以确定哪个项目具有更高的 'f'、'p' 或 'r' 组件。
【问题讨论】:
-
我会考虑分两步执行此操作:使用
itertools.groupby将您的列表划分为具有相同第一个元素的元组序列,然后将您的组合逻辑分别应用于每个序列。 -
你能把你的评论变成一个解决方案吗? @chepner 会很有帮助。
-
另外,恭喜@Darius-Andrei 提出了一个非常吸引人的问题。回复表明人们真的很欣赏这种活动,所以谢谢!
标签: python