1:- module(clex_iface, 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:- multifile(noun_pl/3). 47:- multifile(iv_infpl/2). 48:- multifile(noun_sg/3). 49:- multifile(mn_pl/2). 50:- multifile(dv_finsg/3). 51:- multifile(dv_pp/3). 52:- multifile(adj_itr_sup/2). 53:- multifile(prep/2). 54:- multifile(noun_mass/3). 55:- multifile(iv_finsg/2). 56:- multifile(adj_itr/2). 57:- multifile(tv_infpl/2). 58:- multifile(pndef_pl/3). 59:- multifile(adv_sup/2). 60:- multifile(adj_tr_comp/3). 61:- multifile(adj_itr_comp/2). 62:- multifile(tv_finsg/2). 63:- multifile(pndef_sg/3). 64:- multifile(adj_tr_sup/3). 65:- multifile(pn_sg/3). 66:- multifile(mn_sg/2). 67:- multifile(dv_infpl/3). 68:- multifile(adv/2). 69:- multifile(tv_pp/2). 70:- multifile(pn_pl/3). 71:- multifile(adv_comp/2). 72:- multifile(adj_tr/3). 73 74:- dynamic(noun_pl/3). 75:- dynamic(iv_infpl/2). 76:- dynamic(noun_sg/3). 77:- dynamic(mn_pl/2). 78:- dynamic(dv_finsg/3). 79:- dynamic(dv_pp/3). 80:- dynamic(adj_itr_sup/2). 81:- dynamic(prep/2). 82:- dynamic(noun_mass/3). 83:- dynamic(iv_finsg/2). 84:- dynamic(adj_itr/2). 85:- dynamic(tv_infpl/2). 86:- dynamic(pndef_pl/3). 87:- dynamic(adv_sup/2). 88:- dynamic(adj_tr_comp/3). 89:- dynamic(adj_itr_comp/2). 90:- dynamic(tv_finsg/2). 91:- dynamic(pndef_sg/3). 92:- dynamic(adj_tr_sup/3). 93:- dynamic(pn_sg/3). 94:- dynamic(mn_sg/2). 95:- dynamic(dv_infpl/3). 96:- dynamic(adv/2). 97:- dynamic(tv_pp/2). 98:- dynamic(pn_pl/3). 99:- dynamic(adv_comp/2). 100:- dynamic(adj_tr/3). 101 102 103when_chat80(_):- fail. 104 105:- reexport(talk_db_iface). 106 107 108%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 ;
125clex_verb(Formed, Verb, iv, finsg):- iv_finsg(Formed, Verb). 126clex_verb(Formed, Verb, tv, finsg):- tv_finsg(Formed, Verb). 127clex_verb(Formed, Verb, dv(Prep), finsg):- dv_finsg(Formed, Verb, Prep). 128%clex_verb(Formed, Verb, iv, pp):- iv_pp(Formed, Verb). % iz none .. what about "jump to" ? 129clex_verb(Formed, Verb, tv, pp):- tv_pp(Formed, Verb). 130clex_verb(Formed, Verb, dv(Prep), pp):- dv_pp(Formed, Verb, Prep). 131clex_verb(Formed, Verb, iv, infpl):- iv_infpl(Formed, Verb). 132clex_verb(Formed, Verb, tv, infpl):- tv_infpl(Formed, Verb). 133clex_verb(Formed, Verb, dv(Prep), infpl):- dv_infpl(Formed, Verb, Prep). 134 135both_of(RootNoun, Noun, NounI):- var(RootNoun), nonvar(NounI), !, (Noun=NounI;RootNoun=NounI). 136both_of(_, Noun, Noun). 137both_of(RootNoun, Noun, NounI):- RootNoun\=Noun, Noun=NounI. 138 139clex_mass_noun(NounI, RootNoun, Type):- both_of(RootNoun, Noun, NounI), noun_mass(Noun, RootNoun, Type), both_of(RootNoun, Noun, NounI). 140 141clex_noun(Noun, RootNoun, Type, _SG_OR_PL, mass):- clex_mass_noun(Noun, RootNoun, Type). 142clex_noun(Noun, RootNoun, Type, SG, count):- clex_noun0(Noun, RootNoun, Type, SG), \+ clex_mass_noun(Noun, _, _). 143clex_noun(Noun, RootNoun, unkown, SG, count):- clex_noun1(Noun, RootNoun, SG), \+ clex_noun0(Noun, RootNoun, _, SG), \+ clex_mass_noun(Noun, _, _). 144 clex_noun0(Noun, RootNoun, Type, sg):- noun_sg(Noun, RootNoun, Type). 145 clex_noun0(Noun, RootNoun, Type, pl):- noun_pl(Noun, RootNoun, Type). 146 clex_noun1(Noun, RootNoun, pl):- when_chat80(noun_plu_db(Noun, RootNoun)). 147 clex_noun1(RootNoun, RootNoun, sg):- when_chat80(noun_sin_db(RootNoun)). 148 149clex_adj_prep(Biggest, Big, Prep, Type):- adj_prep0(Biggest, Big, Prep, Type). 150clex_adj_prep(Biggest, Big, Prep, unknown):- adj_tr(Biggest, Big, Prep), \+ adj_prep0(Biggest, _, Prep, _). 151 adj_prep0(Bigger, Big, Prep, comparitve):- adj_tr_comp(Bigger, Big, Prep). 152 adj_prep0(Biggest, Big, Prep, superlative):- adj_tr_sup(Biggest, Big, Prep). 153 154clex_adj(Biggest, Big, Type):- adj_itr0(Biggest, Big, Type). 155clex_adj(Biggest, Big, unknown):- adj_itr(Biggest, Big), \+ adj_itr0(Biggest, _, _). 156 adj_itr0(Bigger, Big, comparitve):- adj_itr_comp(Bigger, Big). 157 adj_itr0(Biggest, Big, superlative):- adj_itr_sup(Biggest, Big). 158 159clex_adv(Biggest, Big, Type):- adv_itr0(Biggest, Big, Type). 160clex_adv(Biggest, Big, unknown):- adv(Biggest, Big), \+ adv_itr0(Biggest, _, _). 161 adv_itr0(Bigger, Big, comparitve):- adv_comp(Bigger, Big). 162 adv_itr0(Biggest, Big, superlative):- adv_sup(Biggest, Big). 163 164%:- style_check(-discontiguous). 165%:- include(library('nldata/clex_lexicon_user1.pl.dat')). 166:- absolute_file_name( 167 library('nldata/clex_lexicon_user1.nldata'), 168 File, [access(read)]), 169 open(File, read, In), 170 set_stream(In, encoding(iso_latin_1)), 171 repeat, 172 read(In, P), 173 % DMiles: i am putting them in backwards (cuz, the hypens- confuse me if they pop out first in the debugger) 174 asserta(P), 175 P==end_of_file, !. 176 177% apply_fixes:- clex_verb(Formed, Verb, dv(Prep), PP)