コード例 #1
0
ファイル: optimal.py プロジェクト: domoritz/summarization
def find_optimum(relation, k):

    formulas = get_all_formulas(relation, True)

    logger.info("# formulas: %s", len(formulas))

    logger.debug("possible formulas: %s", relation_rep(formulas))

    all_subsets = list(subsets(formulas, k))

    logger.info("# subsets: %s", len(all_subsets))

    subset_costs = map(lambda x: cost(x, relation), all_subsets)

    ordered = [x for x in sorted(zip(subset_costs, all_subsets), key=lambda x: x[0])]

    best_cost = ordered[0][0]
    best = filter(lambda x: x[0] == best_cost, ordered)

    return best_cost, best
コード例 #2
0
ファイル: optimal.py プロジェクト: domoritz/summarization
def find_optimum(relation, k):
    """ Finds the optimum set of formulas and its cost.
    This method generates all formulas, all subsets of formulas and
    then calculates the cost for every one of them. This can be very slow."""

    formulas = get_all_formulas(relation, True)

    logger.info('# formulas: %s', len(formulas))

    logger.debug('possible formulas: %s', relation_rep(formulas))

    all_subsets = list(subsets(formulas, k))

    logger.info('# subsets: %s', len(all_subsets))

    subset_costs = map(lambda x: cost(x, relation), all_subsets)

    ordered = [x for x in sorted(zip(subset_costs, all_subsets), key=lambda x: x[0])]

    best_cost = ordered[0][0]
    best = filter(lambda x: x[0] == best_cost, ordered)

    return best_cost, best
コード例 #3
0
ファイル: tests.py プロジェクト: domoritz/summarization
 def test_subsets(self):
     self.assertEqual(list(subsets([1, 2, 3], 2)),
                      [(1, 2), (1, 3), (2, 3)])
コード例 #4
0
ファイル: utils_test.py プロジェクト: wdggat/agau
    def test_subsets(self):
        s = [1,2,3]
	expected = [[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]
	actual = utils.subsets(s)
	#print 'actual: %s' % actual
        self.assertItemsEqual(expected, actual)
コード例 #5
0
    return seqs, list(idxs)


if __name__ == '__main__':
    s1 = "cardouker"
    s2 = "carder"
    print(s1, "vs", s2)
    seqs, idxs = calc_lcss(list(s1), list(s2))
    print("Consequtive:")
    for s, i in zip(seqs, idxs):
        print(s, i)
    seqs, idxs = calc_lcss(list(s1), list(s2))
    print("Nonconsequtive:")
    for s, i in zip(seqs, idxs):
        print(s, i)
    utils.subsets([1, 2, 7, 1, 3, 9])


def update_current_maxsubseq(current, new_seq, k, elapsed, row):
    """
    Updates current sequence with longest elements of new_seq, if applicable, i.e. if there's space left or a longer subseq
    is available
    :param current:
    :param new_seq:
    :param k:
    :return:
    """
    should_sort = False
    if len(current) < k:
        # there's space to add a subsequence, add it
        current.append((new_seq, elapsed, row))