def run_collapse_differences(fs, get=getdst): base = fs[0] del fs[0] subs = [ [get(rule) for rule in concat(compare(base, f)) if rule.type == lev.SUB and rule.dst != rule.src] for f in fs ] return dct.zip(dct.count(concat(subs)), default=0, *map(dct.count, subs))
def combine(sed, ice): setify = lambda d: dct.map_keys(frozenset, d) d = dct.zip(setify(sed), setify(ice)) del d[frozenset(['ld', 'se'])] del d[frozenset(['sw', 'se'])] del d[frozenset(['nw', 'se'])] del d[frozenset(['ld', 'nw'])] del d[frozenset(['ld', 'em'])] del d[frozenset(['yk', 'em'])] return d
def feature_sub(seg1, seg2): "({str:float}*{str:float}) -> float" return (len(set(seg1) ^ set(seg2)) + sum(abs(f1-f2) for f1,f2 in dct.zip(seg1,seg2).values()))