2:- module(morpha,[morpha/2]). 3:- use_module(library(lists),[append/3,select/3]). 4
8
9morpha(Tags1,[pos:Pos,lemma:New|Tags3]):-
10 select(pos:Pos,Tags1,Tags2),
11 select(lemma:Lem,Tags2,Tags3), !,
12 morpha(Pos,Lem,New).
13
14morpha(Tags,Tags).
15
19
20morpha(_,'n\'t',not):- !.
21morpha(_, '\'t',not):- !.
22
23morpha('NN','%',percent):- !.
24
25morpha('$','$',dollar):- !.
26morpha('$','£',pound):- !.
27morpha('$','#',pound):- !.
28morpha('$','€',euro):- !.
29
30morpha('VBP','\'s', be):- !.
31morpha('VBZ','\'s', be):- !.
32morpha('VBP','\'m', be):- !.
33morpha('VBZ','\'m', be):- !.
34morpha('VBP','\'re',be):- !.
35morpha('VBZ','\'re',be):- !.
36
37morpha('JJR',better, good):- !.
38morpha('JJS',best, good):- !.
39morpha('JJR',worse, bad):- !.
40morpha('JJS',worst, bad):- !.
41morpha('JJR',farther, far):- !.
42morpha('JJR',further, far):- !.
43morpha('JJS',farthest, far):- !.
44morpha('JJS',furthest, far):- !.
45morpha('JJR',larger, large):- !.
46morpha('JJS',largest, large):- !.
47morpha('JJR',simpler, simple):- !.
48morpha('JJS',simplest,simple):- !.
49morpha('JJR',closer, close):- !.
50morpha('JJS',closest, close):- !.
51morpha('JJR',freer, free):- !.
52morpha('JJS',freest, free):- !.
53morpha('JJR',safer, safe):- !.
54morpha('JJS',safest, safe):- !.
55morpha('JJR',looser, loose):- !.
56morpha('JJS',loosest, loose):- !.
57morpha('JJR',wider, wide):- !.
58morpha('JJS',widest, wide):- !.
59morpha('JJR',wiser, wise):- !.
60morpha('JJS',wisest, wise):- !.
61
62morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"ier", Codes1), !, append(Codes3,"y",Codes2), name(Lemma2,Codes2).
63morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"iest", Codes1), !, append(Codes3,"y",Codes2), name(Lemma2,Codes2).
64morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"tter",Codes1), !, append(Codes3,"t",Codes2), name(Lemma2,Codes2).
65morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"ttest",Codes1), !, append(Codes3,"t",Codes2), name(Lemma2,Codes2).
66morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"gger",Codes1), !, append(Codes3,"g",Codes2), name(Lemma2,Codes2).
67morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"ggest",Codes1), !, append(Codes3,"g",Codes2), name(Lemma2,Codes2).
68morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"dder",Codes1), !, append(Codes3,"d",Codes2), name(Lemma2,Codes2).
69morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"ddest",Codes1), !, append(Codes3,"d",Codes2), name(Lemma2,Codes2).
70morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"nner",Codes1), !, append(Codes3,"n",Codes2), name(Lemma2,Codes2).
71morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"nnest",Codes1), !, append(Codes3,"n",Codes2), name(Lemma2,Codes2).
72morpha('JJR',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes2,"er", Codes1), !, name(Lemma2,Codes2).
73morpha('JJS',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes2,"est", Codes1), !, name(Lemma2,Codes2).
74
75morpha('RB',only,only):- !.
76morpha('RB',really,really):- !.
77morpha('RB',hardly,hardly):- !.
78morpha('RB',especially,especially):- !.
79morpha('RB',accordingly,accordingly):- !.
80morpha('RB',lovely,lovely):- !.
81morpha('RB',Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes3,"ily",Codes1), !, append(Codes3,"y",Codes2), name(Lemma2,Codes2).
82morpha('RB', Lemma1,Lemma2):- name(Lemma1,Codes1), append(Codes2,"ly",Codes1), !, name(Lemma2,Codes2).
83
84morpha(_,X,X)