Exemple #1
0
    def test_train_exact(self):
        test_cases = [(self.m11, self.m21, self.ph1, 5 / (3.0)),
                      (self.m12, self.m22, self.ph2, 5 / (3.0)),
                      (self.m13, self.m23, self.ph3, 6),
                      (self.m14, self.m24, self.ph4, 6),
                      (self.m15, self.m25, self.ph5, 5 / (3.0)),
                      (self.m16, self.m26, self.ph6, 2),
                      (self.m17, self.m27, self.ph7, 2)]

        for arg1, arg2, phrase, lambda_ in test_cases:
            m = Dilation()
            m._solve(arg1, arg2, phrase)
            self.assertAlmostEqual(m._lambda, lambda_)
 def test_train_exact(self):
     test_cases = [(self.m11, self.m21, self.ph1, 5 / (3.0)),
                   (self.m12, self.m22, self.ph2, 5 / (3.0)),
                   (self.m13, self.m23, self.ph3, 6),
                   (self.m14, self.m24, self.ph4, 6),
                   (self.m15, self.m25, self.ph5, 5 / (3.0)),
                   (self.m16, self.m26, self.ph6, 2),
                   (self.m17, self.m27, self.ph7, 2)
                   ]
     
     for arg1, arg2, phrase, lambda_ in test_cases:
         m = Dilation()
         m._train(arg1, arg2, phrase)
         self.assertAlmostEqual(m._lambda, lambda_)
 def test_train_random(self):
     test_cases = [1.0,2.0,3.0]
     rows = 4
     cols = 3
     m1 = np.random.rand(rows,cols)
     m2 = np.random.rand(rows,cols)
     
     
     for lambda_ in test_cases:
         m = Dilation(lambda_)
         result_p = m._compose(DenseMatrix(m1), DenseMatrix(m2))
         
         m = Dilation()
         m._train(DenseMatrix(m1),DenseMatrix(m2),result_p)
         self.assertAlmostEqual(lambda_, m._lambda)
Exemple #4
0
    def test_dilation(self):

        self.m12 = DenseMatrix(np.mat([[3, 1], [9, 2]]))
        self.m22 = DenseMatrix(np.mat([[4, 3], [2, 1]]))
        self.ph2 = DenseMatrix(np.mat([[18, 11], [24, 7]]))
        self.row = ["a", "b"]
        self.ft = ["f1", "f2"]
        self.space1 = Space(DenseMatrix(self.m12), self.row, self.ft)
        self.space2 = Space(DenseMatrix(self.ph2), ["a_a", "a_b"], self.ft)
        m = Dilation()
        m.export(self.prefix + ".dil1")
        m.train([("a", "b", "a_b")], self.space1, self.space2)
        m.export(self.prefix + ".dil2")
Exemple #5
0
    def test_compose_exact(self):

        test_cases = [(self.m11, self.m21, self.ph1, 5 / (3.0)),
                      (self.m13, self.m23, self.ph3, 6),
                      (self.m14, self.m24, self.ph4, 6)]
        for arg1, arg2, phrase, lambda_ in test_cases:

            m = Dilation()
            m._solve(arg1, arg2, phrase)
            res = m._compose(arg1, arg2)
            np.testing.assert_array_almost_equal(res.mat, phrase.mat, 2)

            m = Dilation(lambda_)
            res = m._compose(arg1, arg2)
            np.testing.assert_array_almost_equal(res.mat, phrase.mat, 2)
 def test_dilation(self):
     
     self.m12 = DenseMatrix(np.mat([[3,1],[9,2]]))
     self.m22 = DenseMatrix(np.mat([[4,3],[2,1]]))
     self.ph2 = DenseMatrix(np.mat([[18,11],[24,7]]))
     self.row = ["a", "b"]
     self.ft = ["f1","f2"]
     self.space1 = Space(DenseMatrix(self.m12), self.row, self.ft)
     self.space2 = Space(DenseMatrix(self.ph2), ["a_a","a_b"], self.ft)
     m = Dilation()
     m.export(self.prefix + ".dil1")
     m.train([("a","b","a_b")], self.space1, self.space2)
     m.export(self.prefix + ".dil2")
Exemple #7
0
    def test_train_random(self):
        test_cases = [1.0, 2.0, 3.0]
        rows = 4
        cols = 3
        m1 = np.random.rand(rows, cols)
        m2 = np.random.rand(rows, cols)

        for lambda_ in test_cases:
            m = Dilation(lambda_)
            result_p = m._compose(DenseMatrix(m1), DenseMatrix(m2))

            m = Dilation()
            m._solve(DenseMatrix(m1), DenseMatrix(m2), result_p)
            self.assertAlmostEqual(lambda_, m._lambda)
def create_model(model, alpha, beta, lambda_):

    #TODO: IMPORTANT here: if alpha, beta of lambda are none
    model_dict = {
        "weighted_add": WeightedAdditive,
        "dilation": Dilation,
        "mult": Multiplicative
    }
    if not model in model_dict:
        raise ValueError("Invalid model:%s" % model)

    if model == "weighted_add":
        model_obj = WeightedAdditive(alpha, beta)
    elif model == "dilation":
        model_obj = Dilation(lambda_)
    else:
        model_obj = Multiplicative()
    return model_obj
 def test_compose_exact(self):
     
     test_cases = [(self.m11, self.m21, self.ph1, 5 / (3.0)),
                   (self.m13, self.m23, self.ph3, 6),
                   (self.m14, self.m24, self.ph4, 6)
                   ]
     for arg1, arg2, phrase, lambda_ in test_cases:
         
         m = Dilation()
         m._train(arg1, arg2, phrase)
         res = m._compose(arg1, arg2)
         np.testing.assert_array_almost_equal(res.mat, phrase.mat, 2)
         
         m = Dilation(lambda_)
         res = m._compose(arg1, arg2)
         np.testing.assert_array_almost_equal(res.mat, phrase.mat, 2)
Exemple #10
0
comp_model = FullAdditive(learner=RidgeRegressionLearner(param=2))
comp_model.train(train_data, space, per_space)
composed_space = comp_model.compose(test_phrases, space)
pred = composed_space.get_sims(test_pairs, CosSimilarity())
print scoring_utils.score(gold, pred, "spearman")

print "Training Weighted Additive composition model..."
comp_model = WeightedAdditive()
comp_model.train(train_data, space, per_space)
print "alpha, beta:", comp_model.alpha, comp_model.beta
composed_space = comp_model.compose(test_phrases, space)
pred = composed_space.get_sims(test_pairs, CosSimilarity())
print scoring_utils.score(gold, pred, "spearman")

print "Training Dilation composition model..."
comp_model = Dilation()
comp_model.train(train_data, space, per_space)
print "lambda:", comp_model._lambda
composed_space = comp_model.compose(test_phrases, space)
pred = composed_space.get_sims(test_pairs, CosSimilarity())
print scoring_utils.score(gold, pred, "spearman")

print "Multiplicative composition model..."
comp_model = Multiplicative()
composed_space = comp_model.compose(test_phrases, space)
pred = composed_space.get_sims(test_pairs, CosSimilarity())
print scoring_utils.score(gold, pred, "spearman")

print "Simple additive composition model..."
comp_model = WeightedAdditive(1, 1)
composed_space = comp_model.compose(test_phrases, space)
Exemple #11
0
#-------
from composes.utils import io_utils
from composes.composition.dilation import Dilation

#training data
train_data = [("good", "car", "good_car"),
              ("good", "book", "good_book")
              ]

#load an argument space
arg_space = io_utils.load("./data/out/ex10.pkl")

#load a phrase space
phrase_space = io_utils.load("data/out/PHRASE_SS.ex10.pkl")
print "Training phrase space"
print phrase_space.id2row
print phrase_space.cooccurrence_matrix

#train a Dilation model on the data
my_comp = Dilation()
my_comp.train(train_data, arg_space, phrase_space)

#print its parameters
print "\nlambda:", my_comp._lambda

#use the model to compose the train data
composed_space  = my_comp.compose([("good", "bike", "good_bike")], 
                                  arg_space)
print "\nComposed space:" 
print composed_space.id2row
print composed_space.cooccurrence_matrix
Exemple #12
0
#ex14.py
#-------
from composes.utils import io_utils
from composes.composition.dilation import Dilation

#training data
train_data = [("good", "car", "good_car"), ("good", "book", "good_book")]

#load an argument space
arg_space = io_utils.load("./data/out/ex10.pkl")

#load a phrase space
phrase_space = io_utils.load("data/out/PHRASE_SS.ex10.pkl")
print "Training phrase space"
print phrase_space.id2row
print phrase_space.cooccurrence_matrix

#train a Dilation model on the data
my_comp = Dilation()
my_comp.train(train_data, arg_space, phrase_space)

#print its parameters
print "\nlambda:", my_comp._lambda

#use the model to compose the train data
composed_space = my_comp.compose([("good", "bike", "good_bike")], arg_space)
print "\nComposed space:"
print composed_space.id2row
print composed_space.cooccurrence_matrix