예제 #1
0
class TestRuleParser(unittest.TestCase):
    def setUp(self):
        self.parser = RuleParser()

    def test_patter_simple(self):
        rules_str = """
        S : NP VP ::
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(rule.head,
                         RuleParser.PatternToken('S', {'label': {'S'}}))
        self.assertEqual(rule.pattern[0],
                         RuleParser.PatternToken('NP', {'label': {'NP'}}))
        self.assertEqual(rule.pattern[1],
                         RuleParser.PatternToken('VP', {'label': {'VP'}}))

    def test_patter_complex(self):
        rules_str = """
        S[type=animal] : NP[a={c,x}, b=0] VP ::
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(
            rule.head,
            RuleParser.PatternToken('S', {
                'label': {'S'},
                'type': {'animal'}
            }))
        self.assertEqual(
            rule.pattern[0],
            RuleParser.PatternToken('NP', {
                'label': {'NP'},
                'a': {'c', 'x'},
                'b': {'0'}
            }))
        self.assertEqual(rule.pattern[1],
                         RuleParser.PatternToken('VP', {'label': {'VP'}}))

    def test_relations_and_transformation(self):
        rules_str = """
        VP : VBP NP PP : VBP -> NP, PP -> VBP : VBP
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(len(rule.relations), 2)
        self.assertEqual(rule.relations[0], ('VBP', 'NP'))
        self.assertEqual(rule.relations[1], ('PP', 'VBP'))
        self.assertEqual(rule.transformation, 'VBP')

    def test_string_replacement(self):
        rules_str = """
        DT : a : : indefinite
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(len(rule.relations), 0)
        self.assertEqual(rule.transformation, 'indefinite')
예제 #2
0
class TestRuleParser(unittest.TestCase):

    def setUp(self):
        self.parser = RuleParser()

    def test_patter_simple(self):
        rules_str = """
        S : NP VP ::
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(rule.head, RuleParser.PatternToken('S', {'label':{'S'}}))
        self.assertEqual(rule.pattern[0], RuleParser.PatternToken('NP', {'label':{'NP'}}))
        self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label':{'VP'}}))

    def test_patter_complex(self):
        rules_str = """
        S[type=animal] : NP[a={c,x}, b=0] VP ::
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(rule.head, RuleParser.PatternToken('S', {'label':{'S'},'type':{'animal'}}))
        self.assertEqual(rule.pattern[0], RuleParser.PatternToken('NP', {'label':{'NP'},'a':{'c','x'},'b':{'0'}}))
        self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label':{'VP'}}))

    def test_relations_and_transformation(self):
        rules_str = """
        VP : VBP NP PP : VBP -> NP, PP -> VBP : VBP
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(len(rule.relations), 2)
        self.assertEqual(rule.relations[0], ('VBP', 'NP'))
        self.assertEqual(rule.relations[1], ('PP', 'VBP'))
        self.assertEqual(rule.transformation, 'VBP')

    def test_string_replacement(self):
        rules_str = """
        DT : a : : indefinite
        """
        rule = self.parser.parse_rules(rules_str)[0]
        self.assertEqual(len(rule.relations), 0)
        self.assertEqual(rule.transformation, 'indefinite')