summaryrefslogtreecommitdiff
path: root/stanford_parser/parser_test.py
blob: e5c90fa605970e616ead1827d8cac919b4e2629c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import unittest


class TestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        from stanford_parser.parser import Parser        
        cls.parser = Parser()
    
    def testParse(self):
        
        dependencies = self.parser.parseToStanfordDependencies("Pick up the tire pallet.")

        tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
        self.assertEqual(tupleResult, [('prt', 'Pick', 'up'),
                                       ('det', 'pallet', 'the'),
                                       ('nn', 'pallet', 'tire'),
                                       ('dobj', 'Pick', 'pallet')])

        self.assertEqual(dependencies.tagForTokenStandoff(gov), "VB")
        self.assertEqual(dependencies.tagForTokenStandoff(dep), "NN") 

    def testParseRefexpNextTo(self):        
        dependencies = self.parser.parseToStanfordDependencies("Pick up the tire pallet next to the truck.")
        
        tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]

        
        self.assertEqual(tupleResult,
                         [('prt', 'Pick', 'up'),
                          ('det', 'pallet', 'the'),
                          ('nn', 'pallet', 'tire'),
                          ('dobj', 'Pick', 'pallet'),
                          ('det', 'truck', 'the'),
                          ('prep_next_to', 'pallet', 'truck')])


    def testParseRefexpNear(self):                
        dependencies =self.parser.parseToStanfordDependencies("Pick up the tire pallet near the truck.")
        
        tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
        self.assertEqual(tupleResult,
                         [('prt', 'Pick', 'up'),
                          ('det', 'pallet', 'the'),
                          ('nn', 'pallet', 'tire'),
                          ('dobj', 'Pick', 'pallet'),
                          ('det', 'truck', 'the'),
                          ('prep_near', 'pallet', 'truck')])

        

    def testParseLong(self):                

        # this sentence has a self dependency that the python code filters out.
        # between drop and drop.
        dependencies = self.parser.parseToStanfordDependencies("Grab the skid of tires right in front of you " +
                                                               "and drop it off just in front and to the " +
                                                               "right of the far skid of tires.")
    
        tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
        self.assertEqual(tupleResult,
                         [('det', 'skid', 'the'), ('dobj', 'Grab', 'skid'),
                          ('prep_of', 'skid', 'tires'), ('dep', 'Grab', 'right'),
                          ('prep_in', 'Grab', 'front'), ('prep_of', 'front', 'you'),
                          ('conj_and', 'Grab', 'drop'), ('dobj', 'drop', 'it'), ('prt', 'drop', 'off'),
                          ('advmod', 'drop', 'just'), ('prep_in', 'drop', 'front'), ('det', 'right', 'the'),
                          ('prep_to', 'drop', 'right'), ('det', 'skid', 'the'), ('amod', 'skid', 'far'),
                          ('prep_of', 'right', 'skid'), ('prep_of', 'skid', 'tires')])
                         
       
    
    def testAllCaps(self):
        dependencies = self.parser.parseToStanfordDependencies("GO TO THE TIRE PALLET NEXT TO THE TRUCK.")
        tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
        self.assertEqual(tupleResult,
                         [('nn', 'PALLET', 'GO'),
                          ('nn', 'PALLET', 'TO'),
                          ('nn', 'PALLET', 'THE'),
                          ('nn', 'PALLET', 'TIRE'),
                          ('nsubj', 'NEXT', 'PALLET'),
                          ('dep', 'NEXT', 'TO'),
                          ('det', 'TRUCK', 'THE'),
                          ('dobj', 'TO', 'TRUCK')])