查看代码
BLOCKS = [
('A', '上线后日志出现超时,且集中在晚间。', '报错栈截图'),
('B', '同一天还改过网关配置。', '配置差异截图'),
]
def interleave(blocks, granularity):
"""把图文块按指定粒度铺成交错序列。"""
seq = []
for head, body, image in blocks:
seq.append(('text', head + ' ' + body))
seq.append(('image', image))
if granularity == 'paired':
return seq
return [seq[0], seq[2], seq[1], seq[3]] # 文字段先集中、图像段后集中
for g in ('paired', 'split'):
print(g, '->', ' | '.join('%s:%s' % (k, v[:8]) for k, v in interleave(BLOCKS, g)))
paired = interleave(BLOCKS, 'paired')
adjacent = all(paired[i][0] == 'text' and paired[i + 1][0] == 'image'
for i in range(0, len(paired), 2))
print('图文配对相邻:', adjacent)
print('两档素材集合相同:',
sorted(interleave(BLOCKS, 'paired')) == sorted(interleave(BLOCKS, 'split')))
预期观察:脚本打印两种交错粒度下的排布,并确认「图文配对相邻」这一档里每张图都紧跟本块文字、两档由同一批素材构成:这说明配对关系与交错粒度都是可以固定下来的构造项;哪一种排布在目标模型上更好,必须用同一套样例实测,脚本本身不给出效果结论。