Beispiel #1
0
 def __init__(self, lst=None, parent=None, features=FeatureSet()):
     super().__init__()
     self.parent = parent
     self.features = FeatureSet()
     self.features.update(features)
     for o in lst or []:
         self.append(o)
Beispiel #2
0
 def test_replace(self):
     fs = FeatureSet()
     fs.replace(self.number.singular)
     self.assertEqual(FeatureSet([self.number.singular]), fs)
     fs.replace(self.number.singular)
     self.assertEqual(FeatureSet([self.number.singular]), fs)
     fs.replace(self.number.plural)
     self.assertEqual(FeatureSet([self.number.plural]), fs)
Beispiel #3
0
 def test_add(self):
     fs = FeatureSet()
     fs.add(self.number.singular)
     self.assertEqual(1, len(fs))
     fs.add(self.number.singular)
     self.assertEqual(1, len(fs))
     fs.add(self.number.plural)
     self.assertEqual(2, len(fs))
Beispiel #4
0
 def test_contains(self):
     fs = FeatureSet([self.number.singular, self.person.first])
     self.assertEqual(2, len(fs))
     self.assertIn(self.number.singular, fs)
     self.assertNotIn(self.number.plural, fs)
     self.assertIn(self.number, fs)
     self.assertEqual(Feature('number', 'plural'),
                      Feature('NUMBER', 'plural'))
     self.assertNotEqual(Feature('number', 'plural'),
                         Feature('number', 'PLURAL'))
Beispiel #5
0
 def from_json(json_object):
     prefix = "<class 'nlglib.microplanning.struct."
     if '__class__' in json_object:
         cls = json_object['__class__']
         if cls == ("%sElement'>" % prefix):
             rv = Element.from_dict(json_object['__value__'])
         elif cls == ("%sElementList'>" % prefix):
             rv = ElementList.from_dict(json_object['__value__'])
         elif cls == ("%sString'>" % prefix):
             rv = String.from_dict(json_object['__value__'])
         elif cls == ("%sWord'>" % prefix):
             rv = Word.from_dict(json_object['__value__'])
         elif cls == ("%sVar'>" % prefix):
             rv = Var.from_dict(json_object['__value__'])
         elif cls == ("%sPhrase'>" % prefix):
             rv = Phrase.from_dict(json_object['__value__'])
         elif cls == ("%sNounPhrase'>" % prefix):
             rv = NounPhrase.from_dict(json_object['__value__'])
         elif cls == ("%sVerbPhrase'>" % prefix):
             rv = VerbPhrase.from_dict(json_object['__value__'])
         elif cls == ("%sPrepositionPhrase'>" % prefix):
             rv = PrepositionPhrase.from_dict(json_object['__value__'])
         elif cls == ("%sAdjectivePhrase'>" % prefix):
             rv = AdjectivePhrase.from_dict(json_object['__value__'])
         elif cls == ("%sAdverbPhrase'>" % prefix):
             rv = AdverbPhrase.from_dict(json_object['__value__'])
         elif cls == ("%sCoordination'>" % prefix):
             rv = Coordination.from_dict(json_object['__value__'])
         elif cls == ("%sClause'>" % prefix):
             rv = Clause.from_dict(json_object['__value__'])
         elif cls == "<class 'nlglib.features.feature.FeatureSet'>":
             rv = FeatureSet()
             rv.update(json_object['__value__'])
         else:
             raise TypeError('Unknown class "{}"'.format(cls))
         if hasattr(rv, 'update_parents'):
             rv.update_parents()
         return rv
     return json_object
Beispiel #6
0
 def __init__(self, features=None, parent=None, id=None):
     self.features = FeatureSet()
     self.features.update(features)
     self.parent = parent
     self.id = id
     self.hash = -1
Beispiel #7
0
 def test_setitem(self):
     fs = FeatureSet([self.number.singular, self.person.first])
     fs[self.number] = self.number.plural
     expected = FeatureSet([self.number.plural, self.person.first])
     self.assertEqual(expected, fs)
Beispiel #8
0
 def test_get(self):
     fs = FeatureSet([self.number.singular, self.person.first])
     self.assertEqual(self.number.singular, fs.get(self.number))
     self.assertEqual(None, fs.get(self.tense))
     self.assertEqual(self.tense.future,
                      fs.get(self.tense, self.tense.future))
Beispiel #9
0
 def test_getitem(self):
     fs = FeatureSet([self.number.singular, self.person.first])
     self.assertEqual(self.number.singular, fs[self.number])
     self.assertIsNone(fs[self.tense])
Beispiel #10
0
 def test_not_equals(self):
     fs1 = FeatureSet([self.number.singular, self.person.first])
     fs2 = FeatureSet()
     fs2.add(self.number.plural)
     fs2.add(self.person.first)
     self.assertNotEqual(fs1, fs2)
Beispiel #11
0
 def test_remove_feature_group(self):
     fs = FeatureSet([self.number.singular, self.person.first])
     fs.remove(self.number)
     self.assertNotIn(self.number.singular, fs)
     self.assertIn(self.person.first, fs)