示例#1
0
def test_basic():
    nr_class = 3
    model = AveragedPerceptron(((1, ), (2, ), (3, ), (4, ), (5, )))
    instances = [(1, {1: 1, 3: -5}), (2, {2: 4, 3: 5})]
    for clas, feats in instances:
        eg = Example(nr_class)
        eg.features = feats
        model(eg)
        eg.costs = [i != clas for i in range(nr_class)]
        model.update(eg)
    eg = Example(nr_class)
    eg.features = {1: 2, 2: 1}
    model(eg)
    assert eg.guess == 2
    eg = Example(nr_class)
    eg.features = {0: 2, 2: 1}
    model(eg)
    assert eg.scores[1] == 0
    eg = Example(nr_class)
    eg.features = {1: 2, 2: 1}
    model(eg)
    assert eg.scores[2] > 0
    eg = Example(nr_class)
    eg.features = {1: 2, 1: 1}
    model(eg)
    assert eg.scores[1] > 0
    eg = Example(nr_class)
    eg.features = {0: 3, 3: 1}
    model(eg)
    assert eg.scores[1] < 0
    eg = Example(nr_class)
    eg.features = {0: 3, 3: 1}
    model(eg)
    assert eg.scores[2] > 0
示例#2
0
def model(instances):
    templates = []
    for batch in instances:
        for _, feats in batch:
            for key in feats:
                templates.append((key, ))
    templates = tuple(set(templates))
    model = AveragedPerceptron(templates)
    for batch in instances:
        model.time += 1
        for clas, feats in batch:
            for key, value in feats.items():
                model.update_weight(key, clas, value)
    return model
示例#3
0
def test_dump_load(model):
    loc = tempfile.mkstemp()[1]
    model.end_training()
    model.dump(loc)
    string = open(loc, 'rb').read()
    assert string
    new_model = AveragedPerceptron([(1, ), (2, ), (3, ), (4, )])
    nr_class = 5
    assert get_scores(nr_class, model, {1: 1, 3: 1, 4: 1}) != \
           get_scores(nr_class, new_model, {1:1, 3:1, 4:1})
    assert get_scores(nr_class, model, {2:1, 5:1}) != \
            get_scores(nr_class, new_model, {2:1, 5:1})
    assert get_scores(nr_class, model, {2:1, 3:1, 4:1}) != \
           get_scores(nr_class, new_model, {2:1, 3:1, 4:1})
    new_model.load(loc)
    assert get_scores(nr_class, model, {1:1, 3:1, 4:1}) == \
           get_scores(nr_class, new_model, {1:1, 3:1, 4:1})
    assert get_scores(nr_class, model, {2:1, 5:1}) == \
           get_scores(nr_class, new_model, {2:1, 5:1})
    assert get_scores(nr_class, model, {2:1, 3:1, 4:1}) == \
           get_scores(nr_class, new_model, {2:1, 3:1, 4:1})
示例#4
0
 def __init__(self, nlp, nr_class):
     self.nlp = nlp
     self.nr_class = nr_class
     self._eg = Example(nr_class=nr_class)
     self._model = AveragedPerceptron([])