1:- module(clex, 2 [ 3 clex_verb/4, 4 tv_pp/2, 5 tv_infpl/2, 6 tv_finsg/2, 7 iv_infpl/2, 8 iv_finsg/2, 9 dv_pp/3, 10 dv_infpl/3, 11 dv_finsg/3, 12 13 % for now we use prep/2 from different (possibly more complete) lexicon 14 prep/2, 15 16 clex_adv/3, 17 adv_sup/2, 18 adv_comp/2, 19 adv/2, 20 21 clex_adj_prep/4, 22 adj_tr_sup/3, 23 adj_tr_comp/3, 24 adj_tr/3, 25 26 clex_adj/3, 27 adj_itr_sup/2, 28 adj_itr_comp/2, 29 adj_itr/2, 30 31 clex_noun/5, 32 noun_sg/3, 33 noun_pl/3, 34 noun_mass/3, 35 36 % for now we use these from different (possibly more complete) lexicon 37 mn_sg/2, 38 mn_pl/2, 39 40 pndef_sg/3, 41 pndef_pl/3, 42 pn_sg/3, 43 pn_pl/3 44 ]). 45 46 47:- multifile(noun_pl/3). 48:- multifile(iv_infpl/2). 49:- multifile(noun_sg/3). 50:- multifile(mn_pl/2). 51:- multifile(dv_finsg/3). 52:- multifile(dv_pp/3). 53:- multifile(adj_itr_sup/2). 54:- multifile(prep/2). 55:- multifile(noun_mass/3). 56:- multifile(iv_finsg/2). 57:- multifile(adj_itr/2). 58:- multifile(tv_infpl/2). 59:- multifile(pndef_pl/3). 60:- multifile(adv_sup/2). 61:- multifile(adj_tr_comp/3). 62:- multifile(adj_itr_comp/2). 63:- multifile(tv_finsg/2). 64:- multifile(pndef_sg/3). 65:- multifile(adj_tr_sup/3). 66:- multifile(pn_sg/3). 67:- multifile(mn_sg/2). 68:- multifile(dv_infpl/3). 69:- multifile(adv/2). 70:- multifile(tv_pp/2). 71:- multifile(pn_pl/3). 72:- multifile(adv_comp/2). 73:- multifile(adj_tr/3). 74 75:- dynamic(noun_pl/3). 76:- dynamic(iv_infpl/2). 77:- dynamic(noun_sg/3). 78:- dynamic(mn_pl/2). 79:- dynamic(dv_finsg/3). 80:- dynamic(dv_pp/3). 81:- dynamic(adj_itr_sup/2). 82:- dynamic(prep/2). 83:- dynamic(noun_mass/3). 84:- dynamic(iv_finsg/2). 85:- dynamic(adj_itr/2). 86:- dynamic(tv_infpl/2). 87:- dynamic(pndef_pl/3). 88:- dynamic(adv_sup/2). 89:- dynamic(adj_tr_comp/3). 90:- dynamic(adj_itr_comp/2). 91:- dynamic(tv_finsg/2). 92:- dynamic(pndef_sg/3). 93:- dynamic(adj_tr_sup/3). 94:- dynamic(pn_sg/3). 95:- dynamic(mn_sg/2). 96:- dynamic(dv_infpl/3). 97:- dynamic(adv/2). 98:- dynamic(tv_pp/2). 99:- dynamic(pn_pl/3). 100:- dynamic(adv_comp/2). 101:- dynamic(adj_tr/3). 102 103 104when_chat80(_):- fail. 105 106%when_chat80(G):- call(chat80:G).
clex_verb(jumped, Verb, ITD, Info)
.
Verb = jump,
ITD = tv,
Info = pp .
?- clex_verb(jump, Verb, ITD, Info)
.
Verb = jump,
ITD = iv,
Info = infpl ;
Verb = jump,
ITD = tv,
Info = infpl ;
123clex_verb(Formed, Verb, iv, finsg):- iv_finsg(Formed, Verb). 124clex_verb(Formed, Verb, tv, finsg):- tv_finsg(Formed, Verb). 125clex_verb(Formed, Verb, dv(Prep), finsg):- dv_finsg(Formed, Verb, Prep). 126%clex_verb(Formed, Verb, iv, pp):- iv_pp(Formed, Verb). % iz none .. what about "jump to" ? 127clex_verb(Formed, Verb, tv, pp):- tv_pp(Formed, Verb). 128clex_verb(Formed, Verb, dv(Prep), pp):- dv_pp(Formed, Verb, Prep). 129clex_verb(Formed, Verb, iv, infpl):- iv_infpl(Formed, Verb). 130clex_verb(Formed, Verb, tv, infpl):- tv_infpl(Formed, Verb). 131clex_verb(Formed, Verb, dv(Prep), infpl):- dv_infpl(Formed, Verb, Prep). 132 133both_of(RootNoun, Noun, NounI):- var(RootNoun), nonvar(NounI), !, (Noun=NounI;RootNoun=NounI). 134both_of(_, Noun, Noun). 135both_of(RootNoun, Noun, NounI):- RootNoun\=Noun, Noun=NounI. 136 137clex_mass_noun(NounI, RootNoun, Type):- both_of(RootNoun, Noun, NounI), noun_mass(Noun, RootNoun, Type), both_of(RootNoun, Noun, NounI). 138 139clex_noun(Noun, RootNoun, Type, _SG_OR_PL, mass):- clex_mass_noun(Noun, RootNoun, Type). 140clex_noun(Noun, RootNoun, Type, SG, count):- clex_noun0(Noun, RootNoun, Type, SG), \+ clex_mass_noun(Noun, _, _). 141clex_noun(Noun, RootNoun, unkown, SG, count):- clex_noun1(Noun, RootNoun, SG), \+ clex_noun0(Noun, RootNoun, _, SG), \+ clex_mass_noun(Noun, _, _). 142 clex_noun0(Noun, RootNoun, Type, sg):- noun_sg(Noun, RootNoun, Type). 143 clex_noun0(Noun, RootNoun, Type, pl):- noun_pl(Noun, RootNoun, Type). 144 clex_noun1(Noun, RootNoun, pl):- when_chat80(noun_plu_db(Noun, RootNoun)). 145 clex_noun1(RootNoun, RootNoun, sg):- when_chat80(noun_sin_db(RootNoun)). 146 147clex_adj_prep(Biggest, Big, Prep, Type):- adj_prep0(Biggest, Big, Prep, Type). 148clex_adj_prep(Biggest, Big, Prep, unknown):- adj_tr(Biggest, Big, Prep), \+ adj_prep0(Biggest, _, Prep, _). 149 adj_prep0(Bigger, Big, Prep, comparitve):- adj_tr_comp(Bigger, Big, Prep). 150 adj_prep0(Biggest, Big, Prep, superlative):- adj_tr_sup(Biggest, Big, Prep). 151 152clex_adj(Biggest, Big, Type):- adj_itr0(Biggest, Big, Type). 153clex_adj(Biggest, Big, unknown):- adj_itr(Biggest, Big), \+ adj_itr0(Biggest, _, _). 154 adj_itr0(Bigger, Big, comparitve):- adj_itr_comp(Bigger, Big). 155 adj_itr0(Biggest, Big, superlative):- adj_itr_sup(Biggest, Big). 156 157clex_adv(Biggest, Big, Type):- adv_itr0(Biggest, Big, Type). 158clex_adv(Biggest, Big, unknown):- adv(Biggest, Big), \+ adv_itr0(Biggest, _, _). 159 adv_itr0(Bigger, Big, comparitve):- adv_comp(Bigger, Big). 160 adv_itr0(Biggest, Big, superlative):- adv_sup(Biggest, Big). 161 162%:- style_check(-discontiguous). 163%:- include(library('nldata/clex_lexicon_user1.pl.dat')). 164:- absolute_file_name('clex_lexicon_user1.nldata', 165 File, [access(read)]), 166 open(File, read, In), 167 set_stream(In, encoding(iso_latin_1)), 168 repeat, 169 read(In, P), 170 % DMiles: i am putting them in backwards (cuz, the hypens- confuse me if they pop out first in the debugger) 171 asserta(P), 172 P==end_of_file, !. 173 174% apply_fixes:- clex_verb(Formed, Verb, dv(Prep), PP)