У меня есть список кортежей. Каждый кортеж состоит из строки и слова. Теперь каждый диктант в этом состоит из списка кортежей. Размер списка составляет около 8 000 записей.
Пример данных:
dataset = [('made of iron oxide', {'entities': [(12, 16, 'PRODUCT'), (17, 20, 'PRODUCT'), (15, 24, 'PRODUCT'), (12, 19, 'PRODUCT')]}),('made of ferric oxide', {'entities': [(10, 15, 'PRODUCT'), (12, 15, 'PRODUCT'), (624, 651, 'PRODUCT'), (1937, 1956, 'PRODUCT')]})]
Отсюда ожидается вывод:
dataset = [('made of iron oxide', {'entities': [(17, 20, 'PRODUCT'), (15, 24, 'PRODUCT'), (12, 19, 'PRODUCT')]}), ('made of ferric oxide', {'entities': [(10, 15, 'PRODUCT'), (624, 651, 'PRODUCT'), (1937, 1956, 'PRODUCT')]})]
Note:
(12, 19 «ПРОДУКТ») сохраняется в выходных данных, поскольку разница между начальным и конечным числом больше, чем (12, 16, «ПРОДУКТ»). PRODUCT является просто меткой и несущественным.
Эти числа являются индексами предложений, чей индекс entities
отображается. Случайные предложения были помещены в пример, так как он несущественный, и операция должна выполняться только по условию entities
. Я хочу удалить перекрывающиеся числа в моем списке и сохранить только те значения индекса entities
, которые имеют наибольшую длину, то есть any value of entities cannot have the same starting or end number
.