;;; Testing codes ;;; $Id: testing.lisp,v 1.3 2008/10/28 21:15:55 bernd Exp $ (defparameter *tests1* '(("access" . ("acess")) ("accessing" . ("accesing")) ("accommodation" . ("accomodation" "acommodation" "acomodation")) ("account" . ("acount")) ("address" . ("adress" "adres")) ("addressable" . ("addresable")) ("arranged" . ("aranged" "arrainged")) ("arrangeing" . ("aranging")) ("arrangement" . ("arragment")) ("articles" . ("articals")) ("aunt" . ("annt" "anut" "arnt")) ("auxiliary" . ("auxillary")) ("available" . ("avaible")) ("awful" . ("awfall" "afful")) ("basically" . ("basicaly")) ("beginning" . ("begining")) ("benefit" . ("benifit")) ("benefits" . ("benifits")) ("between" . ("beetween")) ("bicycle" . ("bicycal" "bycicle" "bycycle")) ("biscuits" . ("biscits" "biscutes" "biscuts" "bisquits" "buiscits" "buiscuts")) ("built" . ("biult")) ("cake" . ("cak")) ("career" . ("carrer")) ("cemetery" . ("cemetary" "semetary")) ("centrally" . ("centraly")) ("certain" . ("cirtain")) ("challenges" . ("chalenges" "chalenges")) ("chapter" . ("chaper" "chaphter" "chaptur")) ("choice" . ("choise")) ("choosing" . ("chosing")) ("clerical" . ("clearical")) ("committee" . ("comittee")) ("compare" . ("compair")) ("completely" . ("completly")) ("consider" . ("concider")) ("considerable" . ("conciderable")) ("contented" . ("contenpted" "contende" "contended" "contentid")) ("curtains" . ("cartains" "certans" "courtens" "cuaritains" "curtans" "curtians" "curtions")) ("decide" . ("descide")) ("decided" . ("descided")) ("definitely" . ("definately" "difinately")) ("definition" . ("defenition")) ("definitions" . ("defenitions")) ("description" . ("discription")) ("desiccate" . ("desicate" "dessicate" "dessiccate")) ("diagrammatically" . ("diagrammaticaally")) ("different" . ("diffrent")) ("driven" . ("dirven")) ("ecstasy" . ("exstacy" "ecstacy")) ("embarrass" . ("embaras" "embarass")) ("establishing" . ("astablishing" "establising")) ("experience" . ("experance" "experiance")) ("experiences" . ("experances")) ("extended" . ("extented")) ("extremely" . ("extreamly")) ("fails" . ("failes")) ("families" . ("familes")) ("february" . ("febuary")) ("further" . ("futher")) ("gallery" . ("galery" "gallary" "gallerry" "gallrey")) ("hierarchal" . ("hierachial")) ("hierarchy" . ("hierchy")) ("inconvenient" . ("inconvienient" "inconvient" "inconvinient")) ("independent" . ("independant" "independant")) ("initial" . ("intial")) ("initials" . ("inetials" "inistals" "initails" "initals" "intials")) ("juice" . ("guic" "juce" "jucie" "juise" "juse")) ("latest" . ("lates" "latets" "latiest" "latist")) ("laugh" . ("lagh" "lauf" "laught" "lugh")) ("level" . ("leval")) ("levels" . ("levals")) ("liaison" . ("liaision" "liason")) ("lieu" . ("liew")) ("literature" . ("litriture")) ("loans" . ("lones")) ("locally" . ("localy")) ("magnificent" . ("magnificnet" "magificent" "magnifcent" "magnifecent" "magnifiscant" "magnifisent" "magnificant")) ("management" . ("managment")) ("meant" . ("ment")) ("minuscule" . ("miniscule")) ("minutes" . ("muinets")) ("monitoring" . ("monitering")) ("necessary" . ("neccesary" "necesary" "neccesary" "necassary" "necassery" "neccasary")) ("occurrence" . ("occurence" "occurence")) ("often" . ("ofen" "offen" "offten" "ofton")) ("opposite" . ("opisite" "oppasite" "oppesite" "oppisit" "oppisite" "opposit" "oppossite" "oppossitte")) ("parallel" . ("paralel" "paralell" "parrallel" "parralell" "parrallell")) ("particular" . ("particulaur")) ("perhaps" . ("perhapse")) ("personnel" . ("personnell")) ("planned" . ("planed")) ("poem" . ("poame")) ("poems" . ("poims" "pomes")) ("poetry" . ("poartry" "poertry" "poetre" "poety" "powetry")) ("position" . ("possition")) ("possible" . ("possable")) ("pretend" . ("pertend" "protend" "prtend" "pritend")) ("problem" . ("problam" "proble" "promblem" "proplen")) ("pronunciation" . ("pronounciation")) ("purple" . ("perple" "perpul" "poarple")) ("questionnaire" . ("questionaire")) ("really" . ("realy" "relley" "relly")) ("receipt" . ("receit" "receite" "reciet" "recipt")) ("receive" . ("recieve")) ("refreshment" . ("reafreshment" "refreshmant" "refresment" "refressmunt")) ("remember" . ("rember" "remeber" "rememmer" "rermember")) ("remind" . ("remine" "remined")) ("scarcely" . ("scarcly" "scarecly" "scarely" "scarsely")) ("scissors" . ("scisors" "sissors")) ("separate" . ("seperate")) ("singular" . ("singulaur")) ("someone" . ("somone")) ("sources" . ("sorces")) ("southern" . ("southen")) ("special" . ("speaical" "specail" "specal" "speical")) ("splendid" . ("spledid" "splended" "splened" "splended")) ("standardizing" . ("stanerdizing")) ("stomach" . ("stomac" "stomache" "stomec" "stumache")) ("supersede" . ("supercede" "superceed")) ("there" . ("ther")) ("totally" . ("totaly")) ("transferred" . ("transfred")) ("transportability" . ("transportibility")) ("triangular" . ("triangulaur")) ("understand" . ("undersand" "undistand")) ("unexpected" . ("unexpcted" "unexpeted" "unexspected")) ("unfortunately" . ("unfortunatly")) ("unique" . ("uneque")) ("useful" . ("usefull")) ("valuable" . ("valubale" "valuble")) ("variable" . ("varable")) ("variant" . ("vairiant")) ("various" . ("vairious")) ("visited" . ("fisited" "viseted" "vistid" "vistied")) ("visitors" . ("vistors")) ("voluntary" . ("volantry")) ("voting" . ("voteing")) ("wanted" . ("wantid" "wonted")) ("whether" . ("wether")) ("wrote" . ("rote" "wote")))) (defparameter *tests2* '(("forbidden" . ("forbiden")) ("decisions" . ("deciscions" "descisions")) ("supposedly" . ("supposidly")) ("embellishing" . ("embelishing")) ("technique" . ("tecnique")) ("permanently" . ("perminantly")) ("confirmation" . ("confermation")) ("appointment" . ("appoitment")) ("progression" . ("progresion")) ("accompanying" . ("acompaning")) ("applicable" . ("aplicable")) ("regained" . ("regined")) ("guidelines" . ("guidlines")) ("surrounding" . ("serounding")) ("titles" . ("tittles")) ("unavailable" . ("unavailble")) ("advantageous" . ("advantageos")) ("brief" . ("brif")) ("appeal" . ("apeal")) ("consisting" . ("consisiting")) ("clerk" . ("cleark" "clerck")) ("component" . ("componant")) ("favourable" . ("faverable")) ("separation" . ("seperation")) ("search" . ("serch")) ("receive" . ("recieve")) ("employees" . ("emploies")) ("prior" . ("piror")) ("resulting" . ("reulting")) ("suggestion" . ("sugestion")) ("opinion" . ("oppinion")) ("cancellation" . ("cancelation")) ("criticism" . ("citisum")) ("useful" . ("usful")) ("humour" . ("humor")) ("anomalies" . ("anomolies")) ("would" . ("whould")) ("doubt" . ("doupt")) ("examination" . ("eximination")) ("therefore" . ("therefoe")) ("recommend" . ("recomend")) ("separated" . ("seperated")) ("successful" . ("sucssuful" "succesful")) ("apparent" . ("apparant")) ("occurred" . ("occureed")) ("particular" . ("paerticulaur")) ("pivoting" . ("pivting")) ("announcing" . ("anouncing")) ("challenge" . ("chalange")) ("arrangements" . ("araingements")) ("proportions" . ("proprtions")) ("organized" . ("oranised")) ("accept" . ("acept")) ("dependence" . ("dependance")) ("unequalled" . ("unequaled")) ("numbers" . ("numbuers")) ("sense" . ("sence")) ("conversely" . ("conversly")) ("provide" . ("provid")) ("arrangement" . ("arrangment")) ("responsibilities" . ("responsiblities")) ("fourth" . ("forth")) ("ordinary" . ("ordenary")) ("description" . ("desription" "descvription" "desacription")) ("inconceivable" . ("inconcievable")) ("data" . ("dsata")) ("register" . ("rgister")) ("supervision" . ("supervison")) ("encompassing" . ("encompasing")) ("negligible" . ("negligable")) ("allow" . ("alow")) ("operations" . ("operatins")) ("executed" . ("executted")) ("interpretation" . ("interpritation")) ("hierarchy" . ("heiarky")) ("indeed" . ("indead")) ("years" . ("yesars")) ("through" . ("throut")) ("committee" . ("committe")) ("inquiries" . ("equiries")) ("before" . ("befor")) ("continued" . ("contuned")) ("permanent" . ("perminant")) ("choose" . ("chose")) ("virtually" . ("vertually")) ("correspondence" . ("correspondance")) ("eventually" . ("eventully")) ("lonely" . ("lonley")) ("profession" . ("preffeson")) ("they" . ("thay")) ("now" . ("noe")) ("desperately" . ("despratly")) ("university" . ("unversity")) ("adjournment" . ("adjurnment")) ("possibilities" . ("possablities")) ("stopped" . ("stoped")) ("mean" . ("meen")) ("weighted" . ("wagted")) ("adequately" . ("adequattly")) ("shown" . ("hown")) ("matrix" . ("matriiix")) ("profit" . ("proffit")) ("encourage" . ("encorage")) ("collate" . ("colate")) ("disaggregate" . ("disaggreagte" "disaggreaget")) ("receiving" . ("recieving" "reciving")) ("proviso" . ("provisoe")) ("umbrella" . ("umberalla")) ("approached" . ("aproached")) ("pleasant" . ("plesent")) ("difficulty" . ("dificulty")) ("appointments" . ("apointments")) ("base" . ("basse")) ("conditioning" . ("conditining")) ("earliest" . ("earlyest")) ("beginning" . ("begining")) ("universally" . ("universaly")) ("unresolved" . ("unresloved")) ("length" . ("lengh")) ("exponentially" . ("exponentualy")) ("utilized" . ("utalised")) ("set" . ("et")) ("surveys" . ("servays")) ("families" . ("familys")) ("system" . ("sysem")) ("approximately" . ("aproximatly")) ("their" . ("ther")) ("scheme" . ("scheem")) ("speaking" . ("speeking")) ("repetitive" . ("repetative")) ("inefficient" . ("ineffiect")) ("geneva" . ("geniva")) ("exactly" . ("exsactly")) ("immediate" . ("imediate")) ("appreciation" . ("apreciation")) ("luckily" . ("luckeley")) ("eliminated" . ("elimiated")) ("believe" . ("belive")) ("appreciated" . ("apreciated")) ("readjusted" . ("reajusted")) ("were" . ("wer" "where")) ("feeling" . ("fealing")) ("and" . ("anf")) ("false" . ("faulse")) ("seen" . ("seeen")) ("interrogating" . ("interogationg")) ("academically" . ("academicly")) ("relatively" . ("relativly" "relitivly")) ("traditionally" . ("traditionaly")) ("studying" . ("studing")) ("majority" . ("majorty")) ("build" . ("biuld")) ("aggravating" . ("agravating")) ("transactions" . ("trasactions")) ("arguing" . ("aurguing")) ("sheets" . ("sheertes")) ("successive" . ("sucsesive" "sucessive")) ("segment" . ("segemnt")) ("especially" . ("especaily")) ("later" . ("latter")) ("senior" . ("sienior")) ("dragged" . ("draged")) ("atmosphere" . ("atmospher")) ("drastically" . ("drasticaly")) ("particularly" . ("particulary")) ("visitor" . ("vistor")) ("session" . ("sesion")) ("continually" . ("contually")) ("availability" . ("avaiblity")) ("busy" . ("buisy")) ("parameters" . ("perametres")) ("surroundings" . ("suroundings" "seroundings")) ("employed" . ("emploied")) ("adequate" . ("adiquate")) ("handle" . ("handel")) ("means" . ("meens")) ("familiar" . ("familer")) ("between" . ("beeteen")) ("overall" . ("overal")) ("timing" . ("timeing")) ("committees" . ("comittees" "commitees")) ("queries" . ("quies")) ("econometric" . ("economtric")) ("erroneous" . ("errounous")) ("decides" . ("descides")) ("reference" . ("refereence" "refference")) ("intelligence" . ("inteligence")) ("edition" . ("ediion" "ediition")) ("are" . ("arte")) ("apologies" . ("appologies")) ("thermawear" . ("thermawere" "thermawhere")) ("techniques" . ("tecniques")) ("voluntary" . ("volantary")) ("subsequent" . ("subsequant" "subsiquent")) ("currently" . ("curruntly")) ("forecast" . ("forcast")) ("weapons" . ("wepons")) ("routine" . ("rouint")) ("neither" . ("niether")) ("approach" . ("aproach")) ("available" . ("availble")) ("recently" . ("reciently")) ("ability" . ("ablity")) ("nature" . ("natior")) ("commercial" . ("comersial")) ("agencies" . ("agences")) ("however" . ("howeverr")) ("suggested" . ("sugested")) ("career" . ("carear")) ("many" . ("mony")) ("annual" . ("anual")) ("according" . ("acording")) ("receives" . ("recives" "recieves")) ("interesting" . ("intresting")) ("expense" . ("expence")) ("relevant" . ("relavent" "relevaant")) ("table" . ("tasble")) ("throughout" . ("throuout")) ("conference" . ("conferance")) ("sensible" . ("sensable")) ("described" . ("discribed" "describd")) ("union" . ("unioun")) ("interest" . ("intrest")) ("flexible" . ("flexable")) ("refered" . ("reffered")) ("controlled" . ("controled")) ("sufficient" . ("suficient")) ("dissension" . ("desention")) ("adaptable" . ("adabtable")) ("representative" . ("representitive")) ("irrelevant" . ("irrelavent")) ("unnecessarily" . ("unessasarily")) ("applied" . ("upplied")) ("apologised" . ("appologised")) ("these" . ("thees" "thess")) ("choices" . ("choises")) ("will" . ("wil")) ("procedure" . ("proceduer")) ("shortened" . ("shortend")) ("manually" . ("manualy")) ("disappointing" . ("dissapoiting")) ("excessively" . ("exessively")) ("comments" . ("coments")) ("containing" . ("containg")) ("develop" . ("develope")) ("credit" . ("creadit")) ("government" . ("goverment")) ("acquaintances" . ("aquantences")) ("orientated" . ("orentated")) ("widely" . ("widly")) ("advise" . ("advice")) ("difficult" . ("dificult")) ("investigated" . ("investegated")) ("bonus" . ("bonas")) ("conceived" . ("concieved")) ("nationally" . ("nationaly")) ("compared" . ("comppared" "compased")) ("moving" . ("moveing")) ("necessity" . ("nessesity")) ("opportunity" . ("oppertunity" "oppotunity" "opperttunity")) ("thoughts" . ("thorts")) ("equalled" . ("equaled")) ("variety" . ("variatry")) ("analysis" . ("analiss" "analsis" "analisis")) ("patterns" . ("pattarns")) ("qualities" . ("quaties")) ("easily" . ("easyly")) ("organization" . ("oranisation" "oragnisation")) ("the" . ("thw" "hte" "thi")) ("corporate" . ("corparate")) ("composed" . ("compossed")) ("enormously" . ("enomosly")) ("financially" . ("financialy")) ("functionally" . ("functionaly")) ("discipline" . ("disiplin")) ("announcement" . ("anouncement")) ("progresses" . ("progressess")) ("except" . ("excxept")) ("recommending" . ("recomending")) ("mathematically" . ("mathematicaly")) ("source" . ("sorce")) ("combine" . ("comibine")) ("input" . ("inut")) ("careers" . ("currers" "carrers")) ("resolved" . ("resoved")) ("demands" . ("diemands")) ("unequivocally" . ("unequivocaly")) ("suffering" . ("suufering")) ("immediately" . ("imidatly" "imediatly")) ("accepted" . ("acepted")) ("projects" . ("projeccts")) ("necessary" . ("necasery" "nessasary" "nessisary" "neccassary")) ("journalism" . ("journaism")) ("unnecessary" . ("unessessay")) ("night" . ("nite")) ("output" . ("oputput")) ("security" . ("seurity")) ("essential" . ("esential")) ("beneficial" . ("benificial" "benficial")) ("explaining" . ("explaning")) ("supplementary" . ("suplementary")) ("questionnaire" . ("questionare")) ("employment" . ("empolyment")) ("proceeding" . ("proceding")) ("decision" . ("descisions" "descision")) ("per" . ("pere")) ("discretion" . ("discresion")) ("reaching" . ("reching")) ("analysed" . ("analised")) ("expansion" . ("expanion")) ("although" . ("athough")) ("subtract" . ("subtrcat")) ("analysing" . ("aalysing")) ("comparison" . ("comparrison")) ("months" . ("monthes")) ("hierarchal" . ("hierachial")) ("misleading" . ("missleading")) ("commit" . ("comit")) ("auguments" . ("aurgument")) ("within" . ("withing")) ("obtaining" . ("optaning")) ("accounts" . ("acounts")) ("primarily" . ("pimarily")) ("operator" . ("opertor")) ("accumulated" . ("acumulated")) ("extremely" . ("extreemly")) ("there" . ("thear")) ("summarys" . ("sumarys")) ("analyse" . ("analiss")) ("understandable" . ("understadable")) ("safeguard" . ("safegaurd")) ("consist" . ("consisit")) ("declarations" . ("declaratrions")) ("minutes" . ("muinutes" "muiuets")) ("associated" . ("assosiated")) ("accessibility" . ("accessability")) ("examine" . ("examin")) ("surveying" . ("servaying")) ("politics" . ("polatics")) ("annoying" . ("anoying")) ("again" . ("agiin")) ("assessing" . ("accesing")) ("ideally" . ("idealy")) ("scrutinized" . ("scrutiniesed")) ("simular" . ("similar")) ("personnel" . ("personel")) ("whereas" . ("wheras")) ("when" . ("whn")) ("geographically" . ("goegraphicaly")) ("gaining" . ("ganing")) ("requested" . ("rquested")) ("separate" . ("seporate")) ("students" . ("studens")) ("prepared" . ("prepaired")) ("generated" . ("generataed")) ("graphically" . ("graphicaly")) ("suited" . ("suted")) ("variable" . ("varible" "vaiable")) ("building" . ("biulding")) ("required" . ("reequired")) ("necessitates" . ("nessisitates")) ("together" . ("togehter")) ("profits" . ("proffits")))) (defun spelltest (tests &optional verbose) (loop with n = 0 and bad = 0 and unknown = 0 for (target . wrongs) in tests do (dolist (wrong wrongs) (let (w) (incf n) (setf w (correct wrong)) (when (string/= w target) (incf bad) (unless (dictionaryp target) (incf unknown)) (if verbose (format t "~&(correct ~S) => ~S (~D); expected ~S (~D)~%" wrong w (gethash w *n-words* 0) target (gethash target *n-words* 0)))))) finally (return (values bad n (round (- 100 (/ (* 100 bad) n))) unknown))))