Parameters
    ----------
    segs1 : a list of tuples
        Each tuple is a segmentation with its score
    segs2 : a list of tuples
        Each tuple is a segmentation with its score
    strokes : list of stroke names for segs2

    Returns
    -------
    list of tuples :
        Segmentations with their score, combined from segs1 and segs2

def merge_segmentations(segs1, segs2, strokes=None):
    """
    Parameters
    ----------
    segs1 : a list of tuples
        Each tuple is a segmentation with its score
    segs2 : a list of tuples
        Each tuple is a segmentation with its score
    strokes : list of stroke names for segs2

    Returns
    -------
    list of tuples :
        Segmentations with their score, combined from segs1 and segs2
    """
    def translate(segmentation, strokes):
        t = []
        for symbol in segmentation:
            symbol_new = []
            for stroke in symbol:
                symbol_new.append(strokes[stroke])
            t.append(symbol_new)
        return t
    if strokes is None:
        strokes = [i for i in range(len(segs2[0][0]))]
    topf = partitions.TopFinder(500)
    for s1, s2 in itertools.product(segs1, segs2):
        topf.push(s1[0]+translate(s2[0], strokes), s1[1]*s2[1])
    return list(topf)