Пример #1
0
    def promote_test(self):
        """
        Ensure that the "promote=" keyword works as expected.

        """
        t = self.t.copy()
        t[0].delete(promote=True)

        tgt = IdTree.fromstring('''(ROOT (DT The) (NP (NN Boy)))''')
        self.assertTrue(t.similar(tgt))

        t2 = self.t.copy()
        t2[0].delete(promote=False)

        tgt = IdTree.fromstring('''(ROOT)''')
        self.assertTrue(t2.similar(tgt))

        t3 = self.t.copy()
        t3[0][1].delete(promote=True)
        tgt=IdTree.fromstring('''(ROOT (NP (DT The) (NN Boy)))''')

        self.assertTrue(t3.similar(tgt))

        t4 = self.t.copy()
        t4[0][1].delete(promote=False)
        tgt=IdTree.fromstring('''(ROOT (NP (DT The)))''')
        self.assertTrue(t4.similar(tgt))
Пример #2
0
    def ordering_test(self):
        """
        This particular tree structure results in changing a child of a tree while iterating through
        the children and required a fix such that if such a change is detected, we start iterating
        over the children again, so we're not holding onto a stale pointer.

        """
        src_t = IdTree.fromstring('''(ROOT (FRAG
                                            (ADVP (RB Probably))
                                            (SBAR (S
                                                    (NP (PRP you))
                                                    (VP (VBP find)
                                                        (ADJP (JJ something))
                                                    )
                                                  )
                                            )
                                           ))''')

        tgt_t = IdTree.fromstring('''(ROOT (FRAG
                                                (VBP chitt-u-m)
                                                (ADVP (RB hola))
                                                (UNK ni)
                                                (UNK hou)
                                                (VBP chitt-u-m)
                                            ))''')
        tgt_w = create_words_tier_from_string('''chitt-u-m hola ni hou chitt-u-m''')
        aln = Alignment([(1,2),(3,1),(3,5)])

        proj = project_ps(src_t, tgt_w, aln)

        self.assertTrue(tgt_t.similar(proj))
Пример #3
0
    def test_duplicates(self):
        """
        Test the case where an English word aligns to multiple language words.

        """
        src_t = IdTree.fromstring('(ROOT (SBARQ (WHNP (WP Who)) (SQ (VP (VBZ else?)))))')
        tgt_w = create_words_tier_from_string('sa-lo sa-lo')
        tgt_t = IdTree.fromstring('(ROOT (SBARQ (WHNP (WP sa-lo) (WP sa-lo))))')
        aln = Alignment([(1,1),(1,2)])

        result = project_ps(src_t, tgt_w, aln)

        self.assertTrue(tgt_t.similar(result))
Пример #4
0
    def ctn_merge_2_test(self):
        src_t = IdTree.fromstring('''(ROOT
                                      (UCP
                                        (S
                                          (NP (PRP They))
                                          (VP
                                            (VBP are)
                                            (RB also)
                                            (ADJP
                                              (RB too)
                                              (JJ lazy)
                                              (S
                                                (VP
                                                  (TO to)
                                                  (VP (VB take) (NP (PRP it)) (ADVP (RB out,))))))))
                                        (CC and)
                                        (SBAR
                                          (IN so)
                                          (S
                                            (NP (PRP they))
                                            (VP (VBP do) (RB not) (VP (VB drink) (NP (NN it.))))))))''')
        tgt_w = create_words_tier_from_string('loĩs-ma yaŋ hunci-suma kat-a-ŋs-e kina u-tus-u-kV-nɨŋ')
        aln = Alignment([(16, 6), (3, 2), (7, 1), (15, 3), (9, 3), (11, 3), (12, 6), (14, 6), (13, 6), (4, 3), (5, 3)])

        proj = project_ps(src_t, tgt_w, aln)
        self.assertEqual(len(proj.leaves()), 6)
Пример #5
0
 def setUp(self):
     self.t = IdTree.fromstring('''(ROOT
                                       (SBARQ
                                         (WHNP (WP Who))
                                         (SQ (VBP do)
                                             (NP (PRP you))
                                         (VP (VB believe)
                                             (VP (VBN called))))))''')
Пример #6
0
    def failed_insertion_test(self):
        t = IdTree.fromstring('''(ROOT
  (SBARQ
    (WHNP (WDT What) (NP (NN kind) (PP (IN of) (NP (NNP work,)))))
    (SQ (VP (VBZ then?)))))''')
        tgt_w = create_words_tier_from_string('kam-a na them lis-no-kha hou')
        aln = Alignment([(1, 3), (2, 5), (4, 1), (5, 5)])

        project_ps(t, tgt_w, aln)
Пример #7
0
    def replace_test(self):
        tgt = IdTree.fromstring('''(ROOT (NP (DT The) (NN Dog)))''')

        self.assertFalse(self.t.similar(tgt))

        # Replace the "NP" in (NP (NN Boy)) with (NN Dog)
        self.t[0,1].replace(IdTree('NN',[Terminal('Dog', index=2)]))

        self.assertTrue(self.t.similar(tgt))
Пример #8
0
    def propagate_test(self):
        tgt = IdTree.fromstring('''(ROOT (NP (DT The)))''')

        self.assertFalse(self.t.similar(tgt))

        # Delete the "NN" in boy.
        self.t[0,1,0].delete()

        self.assertTrue(self.t.similar(tgt))
Пример #9
0
 def setUp(self):
     self.t = IdTree.fromstring('''
     (S
         (NP
             (DT The)
             (NN teacher)
         )
         (VP
             (VBD gave)
             (NP
                 (DT a)
                 (NN book)
             )
             (PP
                 (IN to)
                 (NP
                     (DT the)
                     (NN boy)
                 )
             )
             (NP
                 (NN yesterday)
             )
         )
     )''')
     self.proj = IdTree.fromstring(
         '''(S
             (VBD rhoddodd)
             (NP
                 (DT yr)
                 (NN athro)
             )
             (NP
                 (NN lyfr)
             )
             (PP
                 (IN+DT i'r)
                 (NN bachgen)
             )
             (NP
                 (NN ddoe)
             )
         )''')
     self.aln = intent.alignment.Alignment.Alignment([(1,2), (2,3), (3,1), (5,4), (6, 5), (7, 5), (8, 6), (9, 7)])
Пример #10
0
    def test_swap_preterminals(self):
        t2 = self.t2.copy()
        t2.swap(0,2)

        t3 = IdTree.fromstring('''(NP (NN Fox) (DT quick) (ADJ The))''')
        l = t3.leaves()
        l[0].index = 3
        l[2].index = 1

        self.assertTrue(t2.similar(t3))
Пример #11
0
    def test_merge_preterminal_nodes_no_unify(self):
        t = IdTree.fromstring('''(NP (DT The) (NN Boy) (VB Ran))''')

        self.assertEqual(t.span(), (1,3))
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t[1].span(), (2,2))
        t.merge(0,1, unify_children=False)
        self.assertEqual(t[0].label(), 'DT+NN')
        self.assertEqual(t[0].span(), (1,2))
        self.assertEqual(t.span(), (1,3))
Пример #12
0
    def test_swap_nonterminals(self):
        t = self.t.copy()
        t.swap(0, 1)

        # Now, set up the leaves with the correct indices...
        t2 = IdTree.fromstring('''(S (VP (VB Ran)) (NP (DT The) (NN Boy)))''')
        l = t2.leaves()

        l[0].index = 3
        l[1].index = 1
        l[2].index = 2

        self.assertTrue(t.similar(t2))
Пример #13
0
    def test_merge_preterminal_nodes_unify(self):
        t = IdTree.fromstring('''(NP (DT The) (NN The) (VB Ran))''')

        l = t.leaves()
        l[0].index = 1
        l[1].index = 1
        l[2].index = 2

        self.assertEqual(t.span(), (1,2))
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t[1].span(), (1,1))

        t.merge(0,1, unify_children=True)
        self.assertEqual(t[0].label(), 'DT+NN')
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t.span(), (1,2))
Пример #14
0
    def test_merge_interior_nodes(self):
        t = self.t.copy()

        t[0].merge(0, 1, unify_children=False)

        self.assertNotEqual(t, self.t)

        t2 = IdTree.fromstring('''(ROOT (SBARQ (WHNP+SQ
                                                (WP Who)
                                                (VBP do)
                                                (NP (PRP you))
                                                (VP (VB believe)
                                                    (VP (VBN called))
                                                ))
                                        ))''')
        self.assertTrue(t2.similar(t))
        self.assertEqual(t2[0,0].label(), 'WHNP+SQ')

        t[(0,0)].merge(0,1, unify_children=False)
        self.assertEquals(t[(0,0,0)].span(), (1,2))
Пример #15
0
    def internal_merge_test(self):
        t = IdTree.fromstring('''(ROOT
                                  (UCP
                                    (S
                                      (NP (PRP u-tus-u-kV-nɨŋ))
                                      (VP
                                        (RB u-tus-u-kV-nɨŋ)
                                        (ADJP
                                          (RB loĩs-ma)
                                          (JJ loĩs-ma)
                                          (S (VP (VP (VB loĩs-ma) (NP (PRP kat-a-ŋs-e)) (ADVP (RB loĩs-ma))))))))
                                    (SBAR
                                      (IN loĩs-ma)
                                      (S
                                        (NP (PRP u-tus-u-kV-nɨŋ))
                                        (VP (VBP u-tus-u-kV-nɨŋ) (RB u-tus-u-kV-nɨŋ) (VP (VB loĩs-ma) (NP (NN loĩs-ma))))))))''')

        UCP = t[0]
        self.assertEqual(len(UCP), 2)
        UCP.merge(0,1)


        self.assertEqual(len(UCP), 1)
        self.assertEqual(len(UCP[0]), 4)
Пример #16
0
 def setUp(self):
     self.t = IdTree.fromstring('''(S (NP (DT The) (NN Boy)) (VP (VB Ran) ))''')
     self.t2 = IdTree.fromstring('''(NP (DT The) (ADJ quick) (NN Fox))''')
Пример #17
0
 def setUp(self):
     self.t = IdTree.fromstring('''(ROOT (NP (DT The) (NP (NN Boy))))''')
Пример #18
0
 def setUp(self):
     self.t = IdTree.fromstring('(S (NP (DT the) (NN boy)) (VP (VBD ran) (IN away)))')