% Load the lexicon

:- [brill_small_lex].


% Global constraint as in Brill's work: Change to a tag T only if 
% T is a possible tag for the word W.

constraint(pos,_,T,P) :-
	wd(P,W),
	poss_pos(W,T).
constraint(tag,_,_,_).


:- multifile unknown_predicate_handler/3.


% Word Expert specification

word_expert pos :=
	pos:add T <- wd:W@[0] & {lexicon(W,T)} o
	pos:nn>vb <- pos:to@[-1] o
	pos:vbp>vb <- pos:md@[-1,-2,-3] o
	pos:nn>vb <- pos:md@[-1,-2] o
	pos:vb>nn <- pos:dt@[-1,-2] o
	pos:vbd>vbn <- pos:vbz@[-1,-2,-3] o
	pos:vbn>vbd <- pos:prp@[-1] o
	pos:vbn>vbd <- pos:nnp@[-1] o
	pos:vbd>vbn <- pos:vbd@[-1] o
	pos:vbp>vb <- pos:to@[-1] o
	pos:pos>vbz <- pos:prp@[-1] o
	pos:vb>vbp <- pos:nns@[-1] o
	pos:in>rb <- wd:as@[0] & wd:as@[2] o
	pos:vbd>vbn <- wd:have@[-1,-2] o
	pos:in>wdt <- pos:vb@[1,2] o
	pos:vb>vbp <- pos:prp@[-1] o
	pos:vbp>vb <- wd:'n\'t'@[-1,-2] o
	pos:in>wdt <- pos:vbz@[1] o
	pos:in>dt <- pos:nn@[1] o
	pos:jj>nnp <- pos:nnp@[1] o
	pos:in>wdt <- pos:vbd@[1] o
	pos:jj>nn <- wd:of@[1] o
	pos:vbd>vbn <- wd:be@[-1,-2] o
	pos:jjr>rbr <- pos:jj@[1] o
	pos:in>wdt <- pos:vbp@[1] o
	pos:jjs>rbs <- wd:most@[0] & pos:jj@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:dt@[1] o
	pos:nns>vbz <- pos:prp@[-1] o
	pos:pos>vbz <- pos:dt@[1,2] o
	pos:nnp>nn <- pos:start@[-1] & pos:nns@[1] o
	pos:vbd>vbn <- wd:by@[1] o
	pos:vb>nn <- pos:in@[-1,-2] o
	pos:vb>vbp <- pos:wdt@[-1] o
	pos:vbg>nn <- pos:jj@[-1] o
	pos:nns>vbz <- pos:dt@[1] o
	pos:vbn>vbd <- pos:'WP'@[-1] o
	pos:nn>vbp <- pos:nns@[-1] o
	pos:vb>nn <- pos:nn@[-1] o
	pos:nn>vb <- wd:'n\'t'@[-1] o
	pos:nn>vbg <- pos:dt@[1] o
	pos:rb>jj <- pos:nn@[1] o
	pos:nn>vbp <- pos:prp@[-1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:dt@[1] o
	pos:vb>nn <- pos:pos@[-1,-2] o
	pos:jj>nn <- pos:vbd@[1] o
	pos:rb>rp <- wd:up@[0] & pos:dt@[1] o
	pos:jj>vb <- pos:to@[-1] o
	pos:vbn>vbd <- pos:','@[-1] & pos:dt@[1] o
	pos:vbn>vbd <- wd:that@[-1] o
	pos:vb>vbp <- pos:nns@[-1] & pos:rb@[-2] o
	pos:nnp>jj <- pos:start@[-1] & pos:nn@[1] o
	pos:vb>vbn <- pos:vbz@[-1] o
	pos:nnp>jj <- wd:'American'@[0] & pos:nns@[1] o
	pos:jj>rb <- pos:jjr@[1] o
	pos:nns>nn <- wd:yen@[0] o
	pos:in>wdt <- pos:vbd@[1] o
	pos:dt>in <- wd:that@[0] & pos:nns@[2] o
	pos:pos>vbz <- wd:that@[-1] o
	pos:jj>vb <- pos:md@[-1] o
	pos:vb>nn <- pos:jj@[-1] o
	pos:jjr>rbr <- pos:rb@[1] o
	pos:vbd>vbn <- wd:are@[-1,-2] o
	pos:nn>jj <- wd:executive@[0] & pos:nn@[1] o
	pos:nnp>jj <- wd:'American'@[0] & pos:nn@[1] o
	pos:vbn>vbd <- pos:wdt@[-1] o
	pos:vbd>vbn <- pos:vbd@[-1] & pos:rb@[-2] o
	pos:jj>nn <- pos:dt@[-1] & pos:'.'@[1] o
	pos:nnp>jj <- wd:'German'@[1] o
	pos:vbn>vb <- pos:to@[-1] o
	pos:vbn>vbd <- pos:nnp@[-1] & pos:rb@[-2] o
	pos:rb>in <- wd:to@[0] & wd:up@[1] o
	pos:vb>vbp <- pos:'WP'@[-1] o
	pos:jj>nn <- pos:dt@[-1] & pos:in@[1] o
	pos:in>dt <- wd:'\'s'@[1] o
	pos:vbd>vbn <- wd:ended@[0] & pos:nnp@[1] o
	pos:vbd>vbn <- pos:dt@[-1] & pos:nn@[1] o
	pos:nns>nnp <- pos:nnp@[1] o
	pos:nn>nnp <- pos:nnp@[1] o
	pos:vbg>nn <- pos:dt@[-1] & pos:in@[1] o
	pos:nnp>jj <- pos:start@[-1] & pos:nns@[1] o
	pos:rb>rp <- wd:vb@[0] & pos:up@[-1] o
	pos:vbn>vbd <- pos:prp@[-1] & pos:rb@[-2] o
	pos:jj>rb <- pos:vbn@[1] o
	pos:nn>vbp <- pos:rb@[-1] o
	pos:nns>vbz <- pos:rb@[-1] o
	pos:pos>vbz <- pos:'WP'@[-1] o
	pos:vb>vbn <- wd:have@[-1] o
	pos:nn>'PDT' <- wd:half@[0] & pos:dt@[1] o
	pos:in>dt <- pos:in@[-1] o
	pos:in>wdt <- pos:md@[1] o
	pos:pos>vbz <- pos:dt@[-1] o
	pos:nn>nnp <- wd:'Integrated'@[0] o
	pos:pos>'\'\'' <- pos:'\'\''@[1,2] o
	pos:vbd>vbn <- pos:in@[-1] o
	pos:jjr>rbr <- pos:vbn@[1,2] o
	pos:jjs>rbs <- wd:most@[0] & pos:rb@[1] o
	pos:jj>nn <- pos:jj@[-1] & pos:in@[1] o
	pos:vbz>nns <- pos:jj@[-1] o
	pos:nns>vbz <- wd:jj@[0] & pos:is@[-1] o
	pos:jj>nn <- pos:vbz@[1] o
	pos:vbp>nn <- pos:dt@[-1] o
	pos:jj>nn <- pos:jj@[-1] & pos:'.'@[1] o
	pos:nnps>nnp <- pos:nnp@[1] o
	pos:wdt>dt <- pos:cc@[-1] o
	pos:rb>in <- wd:so@[0] & pos:prp@[1] o
	pos:vbp>nn <- wd:earnings@[-1] o
	pos:nn>vbg <- wd:is@[-1] o
	pos:nns>vbz <- wd:'Mr.'@[-1,-2] o
	pos:vbz>nns <- wd:the@[-1] o
	pos:rb>rp <- wd:vbn@[0] & pos:up@[-1] o
	pos:nnps>nns <- pos:start@[-1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:jj@[1] o
	pos:vbp>vb <- pos:vb@[-2] o
	pos:rbr>jjr <- pos:nns@[1] o
	pos:jj>nn <- pos:dt@[-1] & pos:','@[1] o
	pos:jj>nn <- pos:in@[-1] & pos:'.'@[1] o
	pos:nn>vb <- pos:to@[-1] o
	pos:vb>nn <- pos:vb@[-1] o
	pos:nn>vbp <- wd:who@[-1] o
	pos:rb>rp <- wd:vbg@[0] & pos:up@[-1] o
	pos:nn>rb <- wd:right@[0] & pos:rb@[1] o
	pos:vbz>pos <- wd:nnp@[0] & pos:'\'s'@[-1] o
	pos:jj>rp <- wd:up@[0] & pos:nn@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:nn@[1] o
	pos:vbn>vbd <- pos:cc@[-1] & pos:dt@[1] o
	pos:jj>nn <- pos:md@[1] & pos:vb@[2] o
	pos:jj>rb <- wd:early@[0] & pos:in@[1] o
	pos:jj>vbn <- pos:start@[-1] & pos:in@[1] o
	pos:in>rb <- wd:','@[0] & wd:though@[1] o
	pos:vbd>vbn <- wd:been@[-1,-2] o
	pos:dt>'PDT' <- wd:all@[0] & pos:dt@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:rb@[-2] o
	pos:nn>vb <- wd:help@[-1] o
	pos:vbp>vb <- wd:not@[-1,-2] o
	pos:vbp>nn <- pos:jj@[-1] o
	pos:dt>wdt <- pos:nns@[-1] o
	pos:nn>vbp <- pos:wdt@[-1] o
	pos:vb>rb <- wd:to@[0] & wd:close@[1] o
	pos:nns>vbz <- pos:','@[-1] & pos:wdt@[-2] o
	pos:in>rp <- wd:out@[0] & pos:dt@[1] o
	pos:dt>rb <- wd:longer@[1] o
	pos:in>jj <- pos:dt@[-1] & pos:nn@[1] o
	pos:dt>wdt <- pos:nn@[-1] & pos:vbz@[1] o
	pos:in>vb <- pos:vb@[2] o
	pos:in>nn <- pos:dt@[-1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:nns@[1] o
	pos:in>rb <- wd: $ @[0] & wd:about@[1] o
	pos:'EX'>rb <- pos:in@[1,2] o
	pos:nn>vbg <- pos:'prp$'@[1] o
	pos:nn>vbg <- wd:living@[0] o
	pos:vbz>nns <- pos:'prp$'@[-1] o
	pos:rbr>jjr <- pos:nn@[1] o
	pos:rbr>jjr <- wd:higher@[0] o
	pos:vb>vbp <- pos:prp@[-1] & pos:rb@[-2] o
	pos:nn>vb <- pos:md@[-1] o
	pos:vb>nn <- pos:'prp$'@[-1,-2] o
	pos:rp>in <- pos:','@[-1,-2] o
	pos:vb>jj <- pos:dt@[-1] o
	pos:dt>in <- wd:out@[-1] o
	pos:pos>vbz <- pos:'EX'@[-1] o
	pos:jj>nn <- pos:pos@[1] o
	pos:nn>jj <- wd:first@[0] o
	pos:vbd>vbn <- wd:the@[-1] o
	pos:nns>vbz <- wd:nnp@[0] & pos:plans@[-1] o
	pos:nnp>nns <- pos:start@[-1] & pos:in@[1] o
	pos:rb>jj <- pos:nns@[1] o
	pos:jj>rb <- wd:just@[0] o
	pos:vbp>nn <- wd:sales@[-1] o
	pos:nns>nnps <- wd:'Orange'@[-1] o
	pos:vb>vbn <- pos:vbd@[-1] o
	pos:wdt>dt <- pos:in@[-1] o
	pos:nn>jj <- wd:right@[0] & pos:nn@[1] o
	pos:nn>vbg <- wd:operating@[0] & pos:in@[1] o
	pos:jj>vbn <- wd:insured@[0] o
	pos:jj>nnp <- wd:start@[0] & wd:'U.S.'@[-1] o
	pos:in>dt <- pos:start@[1,2,3] o
	pos:pos>'\'\'' <- pos: `` @[-1,-2,-3] o
	pos:nn>jj <- wd:official@[0] & pos:nn@[1] o
	pos:nnp>jj <- wd:'Irish'@[0] o
	pos:jj>rb <- pos:rbr@[1] o
	pos:vbg>nn <- wd:dt@[0] & pos:selling@[-1] o
	pos:vbp>vb <- pos:md@[-1,-2,-3] o
	pos:wdt>in <- pos:prp@[1] o
	pos:'EX'>rb <- pos:'.'@[1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:'prp$'@[1] o
	pos:vbn>vbd <- wd:said@[0] o
	pos:jj>rb <- pos:md@[-1] o
	pos:nn>vbg <- pos:jj@[1] & pos:nns@[2] o
	pos:jj>rb <- wd:late@[0] & pos:in@[1] o
	pos:vbg>nn <- pos:'prp$'@[-1] o
	pos:vbz>nns <- pos:vbp@[1] o
	pos:nn>nnp <- wd:dt@[0] & pos:cd@[-1] o
	pos:nn>vbn <- wd:be@[-1] o
	pos:jjs>rbs <- pos:vbn@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:'prp$'@[1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:jj@[1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:nn@[1] o
	pos:vbd>vbn <- wd:increased@[0] & pos:nn@[1] o
	pos:vbz>nns <- wd:of@[1] o
	pos:in>rp <- wd:out@[0] & pos:nns@[2] o
	pos:jj>nnp <- pos:pos@[1] o
	pos:rb>rp <- wd:down@[0] & pos:dt@[1] o
	pos:cd>nns <- wd:'1970s'@[0] o
	pos:vbg>nnp <- wd:'Working'@[0] o
	pos:vbn>vb <- pos:md@[-1] o
	pos:jj>nn <- pos:cc@[1] & pos:nn@[2] o
	pos:nn>jj <- pos:start@[-1] & pos:nns@[1] o
	pos:vbn>vbd <- pos:','@[-1] & pos:cc@[-2] o
	pos:in>rb <- pos:'.'@[1] & pos:start@[2] o
	pos:nn>vbg <- wd:was@[-1] o
	pos:nnp>nnps <- wd:'Cowboys'@[0] o
	pos:vbz>nns <- wd:phone@[-1] o
	pos:nnp>nns <- pos:start@[-1] & pos:vbp@[1] o
	pos:rbr>jjr <- wd:lower@[0] & pos:jj@[1] o
	pos:'prp$'>prp <- pos:in@[1] o
	pos:vbd>vb <- pos:to@[-1] o
	pos:jj>nn <- wd:nn@[0] & pos:chief@[-1] o
	pos:jj>nn <- pos:jj@[-1] & pos:','@[1] o
	pos:nn>jj <- wd:dt@[0] & pos:third@[-1] o
	pos:vbn>vbd <- pos:nns@[-1] & pos:nnp@[1] o
	pos:nnp>nn <- pos:start@[-1] & pos:nn@[1] o
	pos:nnp>nn <- wd:'HDTV'@[0] o
	pos:vbg>nn <- pos:dt@[-1] & pos:','@[1] o
	pos:vbg>nn <- pos:dt@[-1] & pos:'.'@[1] o
	pos:nns>vbz <- pos:'WP'@[-1] o
	pos:nn>vb <- pos:cc@[-1] & pos:dt@[1] o
	pos:nnps>nnp <- wd:in@[0] & pos:'Securities'@[-2] o
	pos:rp>in <- pos:nns@[-1] o
	pos:vbp>nn <- wd:funds@[0] & wd:rate@[-1] o
	pos:vbp>nn <- wd:nns@[0] & pos:market@[-1] o
	pos:dt>rb <- wd:'.'@[0] & wd:either@[1] o
	pos:vbn>nn <- pos:dt@[-1] & pos:in@[1] o
	pos:vbd>vb <- pos:md@[-1,-2,-3] o
	pos:nn>jj <- wd:oil@[1] o
	pos:vbn>vbd <- pos:','@[-1] & pos: $ @[1] o
	pos:vbd>vbn <- pos:dt@[-1] & pos:rb@[-2] o
	pos:vbn>jj <- wd:by@[-1] o
	pos:nnp>jj <- wd:'American'@[0] & pos:jj@[1] o
	pos:nn>vbg <- pos:vbp@[-1] o
	pos:jj>rb <- wd:very@[0] & wd:much@[-1] o
	pos:nn>vbg <- wd:officer@[0] & wd:operating@[1] o
	pos:rb>in <- wd:for@[0] & wd:up@[1] o
	pos:nns>vbz <- pos:jj@[1] & pos:nns@[2] o
	pos:nns>vbz <- pos:','@[-1] & pos:in@[1] o
	pos:vb>vbp <- pos:nnps@[-1] o
	pos:in>rp <- wd:out@[0] & pos:in@[2] o
	pos:nnps>nnp <- pos:cc@[-1] & pos:nnp@[-2] o
	pos:nn>rb <- wd:to@[0] & wd:close@[1] o
	pos:rbr>rb <- wd:no@[-1] o
	pos:jj>vbd <- pos:dt@[1] o
	pos:rb>nnp <- pos:nnp@[-1] o
	pos:md>nn <- wd:good@[-1] o
	pos:jj>nn <- wd:nn@[0] & pos:giant@[-1] o
	pos:nn>jj <- wd:official@[0] & pos:nns@[1] o
	pos:vbn>vbd <- pos:','@[-1] & pos:'prp$'@[1] o
	pos:vbn>vbd <- pos:','@[-1] & pos:rb@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:prp@[1] o
	pos:nnp>jj <- wd:'South'@[0] & pos:jj@[1] o
	pos:nn>vbg <- pos:rb@[-1] o
	pos:nns>vbz <- pos:','@[-1] & pos:to@[1] o
	pos:vbz>nns <- pos:nn@[-1] & pos:'.'@[1] o
	pos:nn>vb <- pos:'prp$'@[1] o
	pos:vbp>vb <- wd:do@[-1,-2] o
	pos:vb>jj <- wd:countries@[1] o
	pos:in>wdt <- pos:rb@[1] & pos:vbz@[2] o
	pos:jj>vb <- pos:dt@[1] o
	pos:wdt>dt <- pos:vbz@[1] & pos:','@[2] o
	pos:nnp>rb <- wd:','@[0] & wd:'First'@[1] o
	pos:dt>nnp <- wd:'A'@[0] & pos:vbz@[1] o
	pos:jj>rbr <- wd:','@[0] & wd:further@[1] o
	pos:cd>prp <- wd:one@[0] & pos:md@[1] o
	pos:pos>'\'\'' <- pos:'.'@[-1,-2,-3] o
	pos:prp>nn <- pos:'-LRB-'@[-1] o
	pos:vbn>vbd <- pos:','@[-1] & pos:prp@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:nns@[1] o
	pos:vbn>vbd <- pos:nn@[-1] & pos:rp@[1] o
	pos:nnp>nn <- wd:start@[0] & wd:'Business'@[-1] o
	pos:vbd>vbn <- pos:vbg@[-1] o
	pos:in>rb <- wd:','@[0] & wd:before@[1] o
	pos:in>rb <- wd:'As'@[0] & wd:as@[2] o
	pos:nnp>jj <- wd:'New'@[0] & wd:'York-based'@[-1] o
	pos:nnp>jj <- wd:'Mexican'@[0] o
	pos:nnp>nnps <- wd:'Motors'@[0] & pos:nnp@[1] o
	pos:nnp>nnps <- wd:nnp@[0] & pos:'Enterprises'@[-1] o
	pos:jj>rb <- wd:long@[0] & pos:in@[1] o
	end.


