123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- # -*- coding: utf-8 -*-
- from refo import Question, Star, Any, Plus
- from iepy.extraction.rules import rule, Token, Pos
- RELATION = "was born"
- @rule(True)
- def born_date_in_parenthesis(Subject, Object):
- """
- Ex: Gary Sykes (Born 13 February 1984) is a British super featherweight boxer.
- """
- anything = Star(Any())
- born = Star(Pos(":")) + Question(Token("Born") | Token("born")) + Question(Token("c."))
- entity_leftover = Star(Pos("NNP"))
- return Subject + entity_leftover + Pos("-LRB-") + born + Object + Pos("-RRB-") + anything
- @rule(True)
- def born_two_dates_in_parenthesis(Subject, Object):
- """
- Ex: James Cunningham (born 1973 or 1974) is a Canadian stand-up comedian and TV host.
- """
- anything = Star(Any())
- born = Question(Token("Born") | Token("born"))
- entity_leftover = Star(Pos("NNP"))
- subject = Subject + entity_leftover
- or_object = (Object + Token("or") + Pos("CD") |
- Pos("CD") + Token("or") + Object)
- return subject + Pos("-LRB-") + born + or_object + Pos("-RRB-") + anything
- @rule(True)
- def born_date_and_death_in_parenthesis(Subject, Object):
- """
- Ex: Carl Bridgewater (January 2, 1965 - September 19, 1978) was shot dead
- """
- anything = Star(Any())
- return Subject + Pos("-LRB-") + Object + Token("-") + anything + Pos("-RRB-") + anything
- @rule(True)
- def born_date_and_place_in_parenthesis(Subject, Object):
- """
- Ex: Gary Sykes (Born 13 February 1984) is a British super featherweight boxer.
- """
- anything = Star(Any())
- born = (Token("Born") | Token("born"))
- entity_leftover = Star(Pos("NNP"))
- place = Plus(Pos("NNP") + Question(Token(",")))
- return Subject + entity_leftover + Pos("-LRB-") + born + Object + Token(",") + place + Pos("-RRB-") + anything
- @rule(True)
- def was_born_explicit_mention(Subject, Object):
- """
- Ex: Shamsher M. Chowdhury was born in 1950.
- """
- anything = Star(Any())
- return anything + Subject + Token("was born") + Pos("IN") + Object + anything
- @rule(True)
- def is_born_in(Subject, Object):
- """
- Ex: Xu is born in 1902 or 1903 in a family of farmers in Hubei (China RRB)
- """
- anything = Star(Any())
- return Subject + Token("is born in") + Object + anything
- @rule(True)
- def mentions_real_name(Subject, Object):
- """
- Ex: Harry Pilling, born Ashtonunder-Lyne, Lancashire on 2 February 1943, played ...
- """
- anything = Star(Any())
- real_name = Plus(Pos("NNP") + Question(Token(",")))
- return Subject + Token("born") + real_name + Pos("IN") + Object + anything
- @rule(True)
- def was_born_and_mentions_place(Subject, Object):
- """
- Ex: Nasser Sharify was born in Tehran, Iran, in 1925.
- """
- place = Plus(Pos("NNP") + Question(Token(",")))
- return Subject + Token("was born") + Pos("IN") + place + Pos("IN") + Object + Question(Pos("."))
- @rule(True)
- def was_born_and_mentions_place_2(Subject, Object):
- """
- Ex: Theodone C. Hu was born in 1872 in Huangpu town, Haizhu District, Guangzhou, Guangdong, China.
- """
- anything = Star(Any())
- place = Plus(Pos("NNP") + Question(Token(",")))
- return Subject + Token("was born") + Pos("IN") + Object + Pos("IN") + place + anything
- @rule(True)
- def just_born(Subject, Object):
- """
- Ex: Lyle Eugene Hollister, born 6 July 1923 in Sioux Falls, South Dakota, enlisted in the Navy....
- """
- anything = Star(Any())
- return Subject + Token(", born") + Object + anything
- ## NEGATIVE RULES ##
- @rule(False, priority=1)
- def incorrect_labeling_of_place_as_person(Subject, Object):
- """
- Ex: Sophie Christiane of Wolfstein (24 October 24, 1667 - 23 August 1737)
- Wolfstein is a *place*, not a *person*
- """
- anything = Star(Any())
- person = Plus(Pos("NNP") + Question(Token(",")))
- return anything + person + Token("of") + Subject + anything
|