1 | ;;; nt-english.el --- English |
---|
2 | ;; |
---|
3 | ;; Copyright (C) 2005-2009 naoya_t. All Rights Reserved. |
---|
4 | ;; |
---|
5 | ;; Author: naoya_t <naoya.t@aqua.plala.or.jp> |
---|
6 | ;; Maintainer: naoya_t <naoya.t@aqua.plala.or.jp> |
---|
7 | ;; Primary distribution site: |
---|
8 | ;; http://lambdarepos.svnrepository.com/svn/share/lang/elisp/pdicv-mode/trunk |
---|
9 | ;; |
---|
10 | ;; Created: 23 Dec 2005 |
---|
11 | ;; Last modified: 23 Dec 2005 |
---|
12 | ;; Version: 0.2 |
---|
13 | ;; Keywords: |
---|
14 | |
---|
15 | (provide 'nt-english) |
---|
16 | |
---|
17 | ;;; Commentaries: |
---|
18 | |
---|
19 | ; (nt:english-guess-original-form WORD) |
---|
20 | ; - ������ñ���������Ȥ��롣 |
---|
21 | ; ������Υꥹ�Ȥˤ�WORD �ϴޤޤ����� |
---|
22 | ; |
---|
23 | ; (nt:skipit-p WORD) |
---|
24 | ; - �����åפ�����ñ����, �����Ǥʤ��� nil |
---|
25 | |
---|
26 | ;; Code |
---|
27 | (defvar nt-skip-words '("the" "a" "an" |
---|
28 | "i" "you" "he" "she" "it" "we" "they" |
---|
29 | "am" "are" "is" "was" "were" |
---|
30 | "this" "that" "these" "those" |
---|
31 | "or" "and" "but")) |
---|
32 | |
---|
33 | (defvar nt-english-irreg-verbs-list |
---|
34 | '(("abode" . "abide") |
---|
35 | ("alit" . "alight") |
---|
36 | ("arose" . "arise") ("arisen" . "arise") |
---|
37 | ("awoke" . "awake") ("awoken" . "awake") |
---|
38 | ("backbit" . "backbite") ("backbitten" . "backbite") |
---|
39 | ("backslid" . "backslide") |
---|
40 | ("was" . "be") ("were" . "be") ("been" . "be") |
---|
41 | ("bore" . "bear") ("borne" . "bear") ("born" . "bear") |
---|
42 | ("beaten" . "beat") |
---|
43 | ("became" . "become") |
---|
44 | ("befell" . "befall") ("befallen" . "befall") |
---|
45 | ("begot" . "beget") ("begotten" . "beget") |
---|
46 | ("began" . "begin") ("begun" . "begin") |
---|
47 | ("beheld" . "behold") |
---|
48 | ("bent" . "bend") |
---|
49 | ("bereft" . "bereave") |
---|
50 | ("besought" . "beseech") |
---|
51 | ("bade" . "bid") ("bidden" . "bid") |
---|
52 | ("bade" . "bide") |
---|
53 | ("bound" . "bind") |
---|
54 | ("bit" . "bite") ("bitten" . "bite") |
---|
55 | ("bled" . "bleed") |
---|
56 | ("blent" . "blend") |
---|
57 | ("blest" . "bless") |
---|
58 | ("blew" . "blow") ("blown" . "blow") |
---|
59 | ("broke" . "break") ("broken" . "break") |
---|
60 | ("bred" . "breed") |
---|
61 | ("brought" . "bring") |
---|
62 | ("built" . "build") |
---|
63 | ("burnt" . "burn") |
---|
64 | ("bought" . "buy") |
---|
65 | ("caught" . "catch") |
---|
66 | ("chose" . "choose") ("chosen" . "choose") |
---|
67 | ("clove" . "cleave") ("cleft" . "cleave") ("cloven" . "cleave") |
---|
68 | ("clung" . "cling") |
---|
69 | ("clad" . "clothe") |
---|
70 | ("came" . "come") |
---|
71 | ("crept" . "creep") |
---|
72 | ("crew" . "crow") |
---|
73 | ("durst" . "dare") |
---|
74 | ("dealt" . "deal") |
---|
75 | ("dug" . "dig") |
---|
76 | ("did" . "do") ("done" . "do") |
---|
77 | ("drew" . "draw") ("drawn" . "draw") |
---|
78 | ("dreamt" . "dream") |
---|
79 | ("drank" . "drink") ("drunk" . "drink") |
---|
80 | ("drove" . "drive") ("driven" . "drive") |
---|
81 | ("dwelt" . "dwell") |
---|
82 | ("ate" . "eat") ("eaten" . "eat") |
---|
83 | ("fell" . "fall") ("fallen" . "fall") |
---|
84 | ("fed" . "feed") |
---|
85 | ("felt" . "feel") |
---|
86 | ("fought" . "fight") |
---|
87 | ("found" . "find") |
---|
88 | ("fled" . "flee") |
---|
89 | ("flung" . "fling") |
---|
90 | ("flew" . "fly") ("flown" . "fly") |
---|
91 | ("forbade" . "forbid") ("forbad" . "forbid") ("forbidden" . "forbid") |
---|
92 | ("forgot" . "forget") ("forgotten" . "forget") |
---|
93 | ("forgave" . "forgive") ("forgiven" . "forgive") |
---|
94 | ("forsook" . "forsake") ("forsaken" . "forsake") |
---|
95 | ("froze" . "freeze") ("frozen" . "freeze") |
---|
96 | ("gelt" . "geld") |
---|
97 | ("got" . "get") ("gotten" . "get") |
---|
98 | ("gilt" . "gild") |
---|
99 | ("girt" . "gird") |
---|
100 | ("gave" . "give") ("given" . "give") |
---|
101 | ("gnawn" . "gnaw") |
---|
102 | ("went" . "go") ("gone" . "go") |
---|
103 | ("graven" . "grave") |
---|
104 | ("ground" . "grind") |
---|
105 | ("gript" . "grip") |
---|
106 | ("grew" . "grow") ("grown" . "grow") |
---|
107 | ("hamstrung" . "hamstring") |
---|
108 | ("hung" . "hang") ("hung" . "hang") |
---|
109 | ("had" . "have") |
---|
110 | ("heard" . "hear") |
---|
111 | ("hove" . "heave") |
---|
112 | ("hewn" . "hew") |
---|
113 | ("hid" . "hide") ("hidden" . "hide") |
---|
114 | ("held" . "hold") |
---|
115 | ("inlaid" . "inlay") |
---|
116 | ("kept" . "keep") |
---|
117 | ("knelt" . "kneel") |
---|
118 | ("knew" . "know") ("known" . "know") |
---|
119 | ("laid" . "lay") |
---|
120 | ("led" . "lead") |
---|
121 | ("leant" . "lean") |
---|
122 | ("leapt" . "leap") |
---|
123 | ("learnt" . "learn") |
---|
124 | ("left" . "leave") |
---|
125 | ("lent" . "lend") |
---|
126 | ("lay" . "lie") ("lain" . "lie") |
---|
127 | ("lit" . "light") |
---|
128 | ("lost" . "lose") |
---|
129 | ("made" . "make") |
---|
130 | ("meant" . "mean") |
---|
131 | ("met" . "meet") |
---|
132 | ("molten" . "melt") |
---|
133 | ("misled" . "mislead") |
---|
134 | ("mistook" . "mistake") ("mistaken" . "mistake") |
---|
135 | ("misunderstood" . "misunderstand") |
---|
136 | ("mowed" . "mow") ("mown" . "mow") |
---|
137 | ("outdid" . "outdo") ("outdone" . "outdo") |
---|
138 | ("outwent" . "outgo") ("outgone" . "outgo") |
---|
139 | ("outgrew" . "outgrow") ("outgrown" . "outgrow") |
---|
140 | ("outran" . "outrun") |
---|
141 | ("overcame" . "overcome") |
---|
142 | ("overdid" . "overdo") ("overdone" . "overdo") |
---|
143 | ("overdrew" . "overdraw") ("overdrawn" . "overdraw") |
---|
144 | ("overtook" . "overtake") ("overtaken" . "overtake") |
---|
145 | ("overthrew" . "overthrow") ("overthrown" . "overthrow") |
---|
146 | ("paid" . "pay") |
---|
147 | ("pent" . "pen") |
---|
148 | ("pled" . "plead") |
---|
149 | ("proven" . "prove") |
---|
150 | ("rent" . "rend") |
---|
151 | ("repaid" . "repay") |
---|
152 | ("retold" . "retell") |
---|
153 | ("rewound" . "rewind") |
---|
154 | ("rewrote" . "rewrite") ("rewritten" . "rewrite") |
---|
155 | ("rode" . "ride") ("ridden" . "ride") |
---|
156 | ("rang" . "ring") ("rung" . "ring") |
---|
157 | ("rose" . "rise") ("risen" . "rise") |
---|
158 | ("ran" . "run") |
---|
159 | ("sawn" . "saw") |
---|
160 | ("said" . "say") |
---|
161 | ("saw" . "see") ("seen" . "see") |
---|
162 | ("sought" . "seek") |
---|
163 | ("sold" . "sell") |
---|
164 | ("sent" . "send") |
---|
165 | ("sewn" . "sew") |
---|
166 | ("shook" . "shake") ("shaken" . "shake") |
---|
167 | ("shaven" . "shave") |
---|
168 | ("shorn" . "shear") |
---|
169 | ("shone" . "shine") ("shone" . "shine") |
---|
170 | ("shat" . "shit") |
---|
171 | ("shod" . "shoe") |
---|
172 | ("shot" . "shoot") |
---|
173 | ("shown" . "show") |
---|
174 | ("shrank" . "shrink") ("shrunk" . "shrink") ("shrunken" . "shrink") |
---|
175 | ("shrove" . "shrive") ("shriven" . "shrive") |
---|
176 | ("sang" . "sing") ("sung" . "sing") |
---|
177 | ("sank" . "sink") ("sunk" . "sink") ("sunken" . "sink") |
---|
178 | ("sat" . "sit") |
---|
179 | ("slew" . "slay") ("slain" . "slay") |
---|
180 | ("slept" . "sleep") |
---|
181 | ("slid" . "slide") |
---|
182 | ("slung" . "sling") |
---|
183 | ("slunk" . "slink") |
---|
184 | ("smelt" . "smell") |
---|
185 | ("smote" . "smite") ("smitten" . "smite") |
---|
186 | ("sown" . "sow") |
---|
187 | ("spoke" . "speak") ("spoken" . "speak") |
---|
188 | ("sped" . "speed") |
---|
189 | ("spelt" . "spell") |
---|
190 | ("spellbound" . "spellbind") |
---|
191 | ("spent" . "spend") |
---|
192 | ("spilt" . "spill") |
---|
193 | ("spun" . "spin") ("span" . "spin") |
---|
194 | ("spat" . "spit") |
---|
195 | ("spoilt" . "spoil") |
---|
196 | ("sprang" . "spring") ("sprung" . "spring") |
---|
197 | ("stood" . "stand") |
---|
198 | ("stove" . "stave") |
---|
199 | ("stole" . "steal") ("stolen" . "steal") |
---|
200 | ("stuck" . "stick") |
---|
201 | ("stung" . "sting") |
---|
202 | ("stank" . "stink") ("stunk" . "stink") |
---|
203 | ("strewn" . "strew") |
---|
204 | ("strode" . "stride") ("stridden" . "stride") |
---|
205 | ("struck" . "strike") ("stricken" . "strike") |
---|
206 | ("strung" . "string") |
---|
207 | ("strove" . "strive") ("striven" . "strive") |
---|
208 | ("swore" . "swear") ("sworn" . "swear") |
---|
209 | ("swept" . "sweep") |
---|
210 | ("swollen" . "swell") |
---|
211 | ("swam" . "swim") ("swum" . "swim") |
---|
212 | ("swung" . "swing") |
---|
213 | ("took" . "take") ("taken" . "take") |
---|
214 | ("taught" . "teach") |
---|
215 | ("tore" . "tear") ("torn" . "tear") |
---|
216 | ("telecasted" . "telecast") |
---|
217 | ("told" . "tell") |
---|
218 | ("thought" . "think") |
---|
219 | ("throve" . "thrive") ("thriven" . "thrive") |
---|
220 | ("threw" . "throw") ("thrown" . "throw") |
---|
221 | ("thrust" . "thrust") ("thrust" . "thrust") |
---|
222 | ("trod" . "tread") ("trodden" . "tread") |
---|
223 | ("unbent" . "unbend") |
---|
224 | ("unbound" . "unbind") |
---|
225 | ("underwent" . "undergo") ("undergone" . "undergo") |
---|
226 | ("understood" . "understand") |
---|
227 | ("undertook" . "undertake") ("undertaken" . "undertake") |
---|
228 | ("undid" . "undo") ("undone" . "undo") |
---|
229 | ("woke" . "wake") ("woken" . "wake") |
---|
230 | ("wore" . "wear") ("worn" . "wear") |
---|
231 | ("wove" . "weave") ("woven" . "weave") |
---|
232 | ("wept" . "weep") |
---|
233 | ("won" . "win") |
---|
234 | ("wound" . "wind") |
---|
235 | ("withdrew" . "withdraw") ("withdrawn" . "withdraw") |
---|
236 | ("withheld" . "withhold") |
---|
237 | ("withstood" . "withstand") |
---|
238 | ("wrought" . "work") |
---|
239 | ("wrung" . "wring") |
---|
240 | ("wrote" . "write") ("written" . "write") |
---|
241 | ;; |
---|
242 | ("does" . "do") ("did" "do") |
---|
243 | ("could" . "can") |
---|
244 | ("would" . "will") |
---|
245 | ("should" . "shall") |
---|
246 | ("might" . "may") |
---|
247 | ; ("ain't" "be") |
---|
248 | )) |
---|
249 | |
---|
250 | (defvar nt-english-irreg-nouns-list |
---|
251 | '( |
---|
252 | ("children" . "child") |
---|
253 | ("boxen" . "box") ("oxen" . "ox") |
---|
254 | ("men" . "man") ("women" . "woman") |
---|
255 | ("geese" . "goose") ("teeth" . "tooth") ("feet" . "foot") ("mice" . "mouse") |
---|
256 | ; ("those" . "that") ("these" . "this") |
---|
257 | )) |
---|
258 | |
---|
259 | (defun nt:english-guess-original-form (word) |
---|
260 | (catch 'block |
---|
261 | (cond |
---|
262 | ((null word) (throw 'block nil)) |
---|
263 | ((string= word "") (throw 'block nil)) |
---|
264 | (t nil)) |
---|
265 | |
---|
266 | (let* ((word-len (length word)) |
---|
267 | (body-1 nil) (suffix-1 nil) |
---|
268 | (body-2 nil) (suffix-2 nil) |
---|
269 | (body-3 nil) (suffix-3 nil) |
---|
270 | (body-4 nil) (suffix-4 nil) (tmp)) |
---|
271 | |
---|
272 | (setq body-1 (substring word 0 -1)) |
---|
273 | (setq suffix-1 (substring word -1 nil)) |
---|
274 | |
---|
275 | (when (>= word-len 2) |
---|
276 | (setq body-2 (substring word 0 -2)) |
---|
277 | (setq suffix-2 (substring word -2 nil)) |
---|
278 | (when (>= word-len 3) |
---|
279 | (setq body-3 (substring word 0 -3)) |
---|
280 | (setq suffix-3 (substring word -3 nil)) |
---|
281 | (when (>= word-len 4) |
---|
282 | (setq body-4 (substring word 0 -4)) |
---|
283 | (setq suffix-4 (substring word -4 nil))))) |
---|
284 | |
---|
285 | ;; irregular verbs/nouns first. |
---|
286 | (setq tmp (cdr (assoc word nt-english-irreg-verbs-list))) |
---|
287 | (when tmp (throw 'block (list tmp))) |
---|
288 | (setq tmp (cdr (assoc word nt-english-irreg-nouns-list))) |
---|
289 | (when tmp (throw 'block (list tmp))) |
---|
290 | |
---|
291 | (cond |
---|
292 | ((string= suffix-3 "ves") (list (concat body-3 "fe") (concat body-3 "f") body-1)) ;; -f > -ves |
---|
293 | ((string= suffix-3 "ies") (list (concat body-3 "y") body-1)) ;; -y > -ies |
---|
294 | ((string= suffix-3 "oes") (list body-2)) ;; o > o(e)s |
---|
295 | ((string= suffix-2 "es") (list (concat body-2 "is") body-1 body-2)) ;; (e)s, -is |
---|
296 | ((string= suffix-1 "s") (list body-1)) |
---|
297 | ((string= suffix-1 "i") (list (concat body-1 "us"))) ;; -us > -i |
---|
298 | ((string= suffix-1 "a") (list (concat body-1 "um") (concat body-1 "on"))) ;; -um > -a |
---|
299 | ((string= suffix-2 "ae") (list body-1)) ;; -a > -ae |
---|
300 | |
---|
301 | ; verb -ed |
---|
302 | ((string= suffix-4 "nned") (list body-3)) ;; -n > -nned |
---|
303 | ((string= suffix-4 "dded") (list body-3)) ;; -d > -dded |
---|
304 | ((string= suffix-4 "tted") (list body-3)) ;; -t > -tted |
---|
305 | ((string= suffix-4 "pped") (list body-3)) ;; -p > -pped |
---|
306 | ((string= suffix-4 "gged") (list body-3)) ;; -g > -gged |
---|
307 | ((string= suffix-4 "cked") (list body-2 body-3)) ;; -c[k] > -cked |
---|
308 | ((string= suffix-3 "ied") (list (concat body-3 "y"))) ;; -�Ҳ�+y > -ied ��-���+y > yed |
---|
309 | ((string= suffix-2 "ed") (list body-1 body-2)) ;; (default) -(e) > -ed |
---|
310 | ((string= suffix-2 "id") (list (concat body-2 "y"))) ;; pay > paid, say > said |
---|
311 | ; verb -ing |
---|
312 | ((string= suffix-4 "ying") (list (concat body-4 "ie") body-3)) |
---|
313 | ((string= suffix-3 "ing") (list (concat body-3 "e") body-3)) |
---|
314 | |
---|
315 | ((string= suffix-3 "n't") (list body-3)) |
---|
316 | ((string= suffix-3 "'ll") (list body-3)) |
---|
317 | ((string= suffix-3 "'re") (list body-3)) |
---|
318 | ((string= suffix-2 "'m") (list body-2)) |
---|
319 | ((string= suffix-2 "'d") (list body-2)) |
---|
320 | ((string= suffix-2 "'s") (list body-2)) |
---|
321 | |
---|
322 | (t nil))))) ;; ������ʤ��������������� |
---|
323 | |
---|
324 | (defmacro nt:skipit-p (word) |
---|
325 | `(if (member (downcase ,word) nt-skip-words) t nil)) |
---|
326 | |
---|
327 | ;;; nt-english.el ends here |
---|