Пример #1
0
 def test_match(self):
     # Assert Match properties.
     s = Sentence(parse("Death awaits you all with nasty, big, pointy teeth."))
     p = search.Pattern(sequence=[
         search.Constraint(tags=["JJ"], optional=True),
         search.Constraint(tags=["NN*"])])
     m = p.search(s)
     self.assertTrue(isinstance(m, list))
     self.assertEqual(m[0].pattern, p)
     self.assertEqual(m[1].pattern, p)
     self.assertEqual(m[0].words, [s.words[0]])
     self.assertEqual(m[1].words, [s.words[-3], s.words[-2]])
     # Assert contraint "NN*" links to "Death" and "teeth", and "JJ" to "pointy".
     self.assertEqual(m[0].constraint(s.words[ 0]), p[1])
     self.assertEqual(m[1].constraint(s.words[-3]), p[0])
     self.assertEqual(m[1].constraint(s.words[-2]), p[1])
     # Assert constraints "JJ NN*" links to chunk "pointy teeth".
     self.assertEqual(m[1].constraints(s.chunks[6]), [p[0], p[1]])
     # Assert Match.constituents() by constraint, constraint index and list of indices.
     self.assertEqual(m[1].constituents(), [s.chunks[6]])
     self.assertEqual(m[1].constituents(constraint=p[0]), [s.words[-3]])
     self.assertEqual(m[1].constituents(constraint=1), [s.words[-2]])
     self.assertEqual(m[1].constituents(constraint=(0,1)), [s.chunks[6]])
     # Assert Match.string.
     self.assertEqual(m[1].string, "pointy teeth")
     print "pattern.search.Match"
Пример #2
0
 def test_pattern(self):
     # Assert Pattern properties.
     v = search.Pattern([
         search.Constraint("a|an|the"),
         search.Constraint("JJ*"),
         search.Constraint("cat")], search.STRICT)
     self.assertEqual(len(v), 3)
     self.assertEqual(v.strict, True)
     print "pattern.search.Pattern"
Пример #3
0
 def test_string(self):
     # Assert Constraint.string.
     v = search.Constraint()
     v.words    = ["Steven\\*"]
     v.tags     = ["NN*"]
     v.roles    = ["SBJ"]
     v.taxa     = ["(associate) professor"]
     v.exclude  = search.Constraint(["bird"])
     v.multiple = True
     v.first    = True
     self.assertEqual(v.string, "^[Steven\\*|NN*|SBJ|\(ASSOCIATE\)_PROFESSOR|!bird]+")
     print "pattern.search.Constraint.string"
Пример #4
0
 def test_group_ordering(self):
     # Assert group parser ordering (opened-first).
     c1 = search.Constraint("1")
     c2 = search.Constraint("2")
     c3 = search.Constraint("3")
     c4 = search.Constraint("4")
     p = search.Pattern([c1, [c2, [[c3], c4]]])
     self.assertEqual(p.groups[0][0].words[0], "2")
     self.assertEqual(p.groups[0][1].words[0], "3")
     self.assertEqual(p.groups[0][2].words[0], "4")
     self.assertEqual(p.groups[1][0].words[0], "3")
     self.assertEqual(p.groups[1][1].words[0], "4")
     self.assertEqual(p.groups[2][0].words[0], "3")
     p = search.Pattern.fromstring("1 {2 {{3} 4}}")
     self.assertEqual(p.groups[0][0].words[0], "2")
     self.assertEqual(p.groups[0][1].words[0], "3")
     self.assertEqual(p.groups[0][2].words[0], "4")
     self.assertEqual(p.groups[1][0].words[0], "3")
     self.assertEqual(p.groups[1][1].words[0], "4")
     self.assertEqual(p.groups[2][0].words[0], "3")
     p = search.Pattern.fromstring("1 {2} {3} 4")
     self.assertEqual(p.groups[0][0].words[0], "2")
     self.assertEqual(p.groups[1][0].words[0], "3")