All Downloads are FREE. Search and download functionalities are using the official Maven repository.

resources.NE.org_context.jape Maven / Gradle / Ivy

Go to download

ANNIE is a general purpose information extraction system that provides the building blocks of many other GATE applications.

There is a newer version: 9.1
Show newest version
/*
*  org_context.jape
*
* Copyright (c) 1998-2004, The University of Sheffield.
*
*  This file is part of GATE (see http://gate.ac.uk/), and is free
*  software, licenced under the GNU Library General Public License,
*  Version 2, June 1991 (in the distribution as file licence.html,
*  and also available at http://gate.ac.uk/gate/licence.html).
*
*  Diana Maynard, 10 Sep 2001
* 
*  $Id: org_context.jape 18220 2014-07-31 15:05:47Z dgmaynard $
*/


Phase:	Org_Context
Input: Token Lookup Organization Unknown Location Person JobTitle Initials
Options: control = appelt

Macro: THE
( 
 {Token.string == "the"}|
 {Token.string == "The"}|
 {Token.string == "THE"}
)


Rule:OrgContext1
Priority: 1
// company X
// company called X

(
 {Token.string == "company"}
 (({Token.string == "called"}|
   {Token.string == "dubbed"}|
   {Token.string == "named"}
  )
 )?
)
( 
 {Unknown.kind == PN}
)
:org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgContext1");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}

Rule: OrgContext2
Priority: 5

// Telstar laboratory
// Medici offices
(
 {Unknown.kind == PN}
): org
(
 ({Token.string == "offices"} |
 {Token.string == "Offices"} |
 {Token.string == "laboratory"} | 
 {Token.string == "Laboratory"} |
 {Token.string == "laboratories"} |
 {Token.string == "Laboratories"})
)
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgContext2");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}

Rule:OrgContext3
Priority: 5
// X shares

(
 {Unknown.kind == PN}
):org
( 
 {Token.string == "shares"}
)
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgContext3");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}

Rule:OrgContext4
Priority: 10
// shares in X

( 
 {Token.string == "shares"}
 {Token.string == "in"}
)
(
 {Unknown.kind == PN}
):org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgContext4");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}


Rule: OrgContext5
Priority: 10
// officials at X

(
 ({Token.string == "officials"}|
  {Token.string == "Officials"})
 {Token.string == "at"}
)
(
 {Unknown.kind == PN}
):org
-->
 {
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgContext5");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}


Rule:JoinOrg
Priority: 50
// Smith joined Energis
// later we should use the morph PR to prevent having to list morphological variants

(
 ({Token.string == "joined"}|
  {Token.string == "joining"}|
  {Token.string == "joins"}|
  {Token.string == "join"}
 )

)
( 
 {Unknown.kind ==PN}
)
:org
-->
 {
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "JoinOrg");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}


Rule:OrgPerson
Priority: 20
// Nokia Vice-President William Plummer

(
 {Unknown.kind == PN}
):org 
(
 ({Token.string == "'"}
  ({Token.string == "s"})?
 )?

 {Person.rule1 == PersonTitle}
)
--> 
 {
//get the matched annotation(s)
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");

//create the new annotation
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgPerson");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);

//delete the old annotation(s)
outputAS.removeAll(org);
}

Rule:UnknownJobTitlePerson

(
 {Unknown.kind == PN}
):org 
(
 ({Token.string == "'"}
  ({Token.string == "s"})?
 )?
{JobTitle}
 {Person}
)
--> 
 {
//get the matched annotation(s)
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");

//create the new annotation
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "UnknownJobTitlePerson");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);

//delete the old annotation(s)
outputAS.removeAll(org);
}

Rule: OrgConjOrg1 
Priority: 10

(
{Unknown.kind == PN}
):org
(
{Token.category == CC}
{Organization}
)
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgConjOrg1");
features.put("orgType ", "unknown");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}


Rule: OrgConjOrg2
Priority: 10

(
 {Organization}
 {Token.category == CC}
)
(
 {Unknown.kind == PN}
):org
-->
 {
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgConjOrg2");
features.put("orgType ", "unknown");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}



//Rule: OrgJobtitle
//Priority: 30
//(
// {Unknown.kind == PN}
//):org
//( 
// {Lookup.majorType == jobtitle}
//)
//-->
//  {
//gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
//gate.FeatureMap features = Factory.newFeatureMap();
//features.put("rule ", "OrgJobTitle");
//features.put("orgType ", "company");
//outputAS.add(org.firstNode(), org.lastNode(), "Organization",
//features);
//outputAS.removeAll(org);
//}


Rule: AcronymOrg
Priority: 30


 (THE)
 ({Initials, Unknown.kind == PN}):org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "AcronymOrg");
features.put("orgType ", "unknown");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}

 
Rule: OrgBracketOrg
Priority: 30

(
 {Organization}
 {Token.string == "("}
)
({Initials, Unknown.kind == PN}):org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "OrgBracketOrg");
features.put("orgType ", "unknown");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}


Rule: PersonOrgEnding
Priority: 30
// J.W. Fish & Co should be an Organisation not a Person

(
 ({Person}):person
 {Lookup.majorType == cdg}
):org
-->
{
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("org");
gate.AnnotationSet personSet = (gate.AnnotationSet) bindings.get("person");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "PersonOrgEnding");
features.put("orgType ", "company");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(personSet);
}


Rule:CityUniversity

(
 {Location.locType == city}
 {Token.string == "University"}
 ):tag
 -->
 {
gate.AnnotationSet org = (gate.AnnotationSet) bindings.get("tag");
gate.FeatureMap features = Factory.newFeatureMap();
features.put("rule ", "CityUniversity");
features.put("orgType ", "university");
outputAS.add(org.firstNode(), org.lastNode(), "Organization",
features);
outputAS.removeAll(org);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy