假设我有一个嵌套列表,如下所示:
my_list = [['Germany', 'B-LOC'], ['Angela', 'B-PER'], ['Merkel', 'I-PER']]
因此,每个元素包含两个字符串,第一个字符串代表文本数据中的单词,第二个字符串代表机器学习模型中的标签。
在这里,B-LOC
指Begin Location
,B-PER
指Begin Person
,而I-PER
指Inside Person
。
我感兴趣的是一种根据标签来查找属于在一起的字符串的聪明方法。
在这种情况下,我想输出类似
print(....)
>>> Germany Location
>>> Angela Merkel Person
任何建议/提示如何开始?
答案 0 :(得分:0)
这是一种方法。使用collections.defaultdict
例如:
from collections import defaultdict
my_list = [['Germany', 'B-LOC'], ['Angela', 'B-PER'], ['Merkel', 'I-PER']]
d = defaultdict(list)
check_val = {"PER": "Person", "LOC": "Location"}
for i in my_list:
d[check_val.get(i[1][-3:], "N\A")].append(i[0])
for k, v in d.items():
print( " ".join(v) + " " + k )
输出:
Angela Merkel Person
Germany Location
答案 1 :(得分:0)
尝试列表理解:
data_location = [x[0] for x in my_list if 'LOC' in x[1]]
data_person = [x[0] for x in my_list if 'PER' in x[1]]
print( ' '.join(data_location), 'Location')
print(' '.join(data_person), 'Person')
输出:
Germany Location
Angela Merkel Person