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