2006年3月14日 星期二

Word Calculator

更新紀錄

  • 2006/03/13:讀取檔名列表,並計算列在其中的檔案之間的 f-score 差異。
  • 2006/03/10:計算 GTB 和 PB 中的動詞個數。
  • 2005/11/15:加入不規則變化字典;結果
  • 2005/11/11:結果

檔名列表格式

#Base
代表下一行的檔名為 base line
#Lists
代表其後列出的每一行為要比較的檔名列表

預設,碰到的第一個 #Base#Lists 代表的是 PB,其後的 #Base#Lists 會被視為是 GTB。 下面是一個完整範例:

#Base
pb-pasbio_:0:1:_test.svm.Result.Eval
#Lists
pb-pasbio_:0:1:_test.svm.*1*9*.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.13.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.15.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.16.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.*20*24*.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.*27*31*.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.*35*37*.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.41.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.45.svm.Result.Eval
pb-pasbio_:0:1:_test.svm.51.svm.Result.Eval
#Base
gtb-supervised_:0:1:.svm.Result.Eval
#Lists
gtb-supervised_:0:1:.svm.*1*9*.svm.Result.Eval
gtb-supervised_:0:1:.svm.13.svm.Result.Eval
gtb-supervised_:0:1:.svm.15.svm.Result.Eval
gtb-supervised_:0:1:.svm.16.svm.Result.Eval
gtb-supervised_:0:1:.svm.*20*24*.svm.Result.Eval
gtb-supervised_:0:1:.svm.*27*31*.svm.Result.Eval
gtb-supervised_:0:1:.svm.*35*37*.svm.Result.Eval
gtb-supervised_:0:1:.svm.41.svm.Result.Eval
gtb-supervised_:0:1:.svm.45.svm.Result.Eval
gtb-supervised_:0:1:.svm.51.svm.Result.Eval

另外,列表檔中的特殊字元「:」和「*」,分別代表的是實驗取樣編號(上例是取樣 0 到 1)和 feature 編號(1~9、13、15、16、20~24、27~31、35~37、41、45 和 51)

feature 編號

##### Feature: Predicate
1
##### Feature: Path 
2
##### Feature: Phrase Type
3
##### Feature: Position (Left / Right / ContainJust / Contain)
4
##### Feature: Voice
5
##### Feature: Head Word
6
##### Feature: Sub-categorization
7
##### Feature: Head POS
8
##### Feature: First Word
9
##### Feature: First Word's POS
10
##### Feature: Last Word
11
##### Feature: Last Word's POS
12
##### Feature: Contain First Word
13
##### Feature: Contain Last Word
14
##### Feature: Combination: Distance(predicate and phrase) and Predicate
15
##### Feature: Syntactic Frame of predicate/NP
16 17 18 19
##### Feature: PP Parent's Headword
20
##### Feature: Combination: Voice and Position
21
##### Feature: Combination: Predicate and Phrase Type
22
##### Feature: Combination: Predicate and Headword
23
##### Feature: Named Entity

##### Feature: Headword suffixes of length 2, 3, 4
24 25 26
##### Feature: Number of words in the phrase
27
##### Feature: Chunk distance: All/VP

##### Feature: Predicate's Verb Class
28
##### Feature: Predicate POS tag
29
##### Feature: Predicate Frequency: (f > 3) ? frequent : rare
30
##### Feature: Predicate's Context: BP (Chunk)

##### Feature: Predicate's Context: POS
31 32 33 34
##### Feature: Number of predicates
35
##### Feature: Level 
36
##### Feature: Context: Words +-2
37 38 39 40
##### Feature: Context: Context POS +-2
41 42 43 44
##### Feature: Context: Chunk Type

##### Feature: Parent's Features 
45 46 47 48 49 50
##### Feature: Siblings' Features
L : 51 52 53 54 55 56
R : 57 58 59 60 61 62

需求

將命令列指定檔案內的各種動、名詞(各種型態)總數加起來。

本程式主要的目的是能夠自動辨識不同型態的英文單字,將相同意義但是型態不同的單字(比如 abolish、abolished、abolishes、abolishing)視為相同,在將它們的總數計算成列於後。

使用範例

加入 GTP 和 PB 支援後:

java -jar wordsummer.jar -h

上面的用法會顯示使用說明:

usage:
   java -jar tools.jar [option] [verb list filename] filename
available option:
   -Tfre:
           total frequence.
   -Vfre:
           verb frequence.
-Tfre
計算所有句子中,滿足是動詞的個數(frequency)
-Vfre
必須加上 verb list filename 參數(該參數是一個包含動詞(變化型、原形)的列表檔),其會依據提供的列表檔中的動詞列表,來計算動詞個數(frequency)

上面兩個參數都會產生原檔名.fre 的結果檔,其內容為每一個動詞的出現次數。

不加上任何參數時,會依據提供的動詞 fre 檔,產生結果。


Ant task

  • WordSummer
  • WordSummerTest
  • build
  • clean
  • help
  • init
java -jar wordsummer.jar [inputfile]

或是執行 JUnit 測試程式:

java -jar wordsummer.jar WordSummerTest

輸入檔案的內容格式(以 tab 分隔字元和其出現數目:字元^t數目):

-competed 1
-expressing 1
-phosphorylated 1
-ribosylates 1
/activating 1
a 1
abbreviated 1
ablating 2
abolish 10
abolished 54
abolishes 16
abolishing 1

輸出的結果為:

-competed,1,-competed,1

-expressing,1,-expressing,1

-phosphorylated,1,-phosphorylated,1

-ribosylates,1,-ribosylates,1

/activating,1,/activating,1

a,1,a,1

abbreviated,1,abbreviated,1

ablating,2,ablating,2

abolish,81,abolish,10
abolish,81,abolished,54
abolish,81,abolishes,16
abolish,81,abolishing,1

即經過 WordSummer 處理後的結果格式為:

單字,總出現數目,原始單字,原始單字出現的數目

輸入的資料可以不用排序過如下:

activated 620
induced 589
expressed 503
has 492
been 478
found 422
suggest 391
increased 372
show 367
required 348
involved 330
inhibited 329
demonstrate 309
identified 308
shown 295
showed 290
binding 290
using 289
observed 276
associated 270
demonstrated 270
did 264
mediated 255
induce 233
including 228
containing 227

程式說明

因為趕著要交給 Jacky 作文檔的分析,因此整個程式架構有點凌而且有許多重複,或為完整實做的部分。不過執行出來的結果已經可以讓人接受,省去不少時間!

基本上程式的實做是依循著英文的文法規則來加以撰寫,大致上,被讀進來的每一個單字,會被 model 成一個個 idv.hjd.util.Vocabulary 物件,而若是經由文法規則判斷某幾個單字為變化形時,則會把它們全部填入 idv.hjd.util.VocabularyList 物件中。

程式主要是以 eclipse 開發,另外提供了 ant 的建構檔。

不規則變化字典

下面列出是套用的字典檔:

abide,abides,abiding,abided,abided
aby,abyes,abys,abying,abought,abought
aerify,aerifies,aerifying,aerified,aerified
air-dry,air-dries,air-drying,air-dried,air-dried
anglicise,anglicises,anglicising,anglicised,anglicised
anglicize,anglicizes,anglicizing,anglicized,anglicized
anglify,anglifies,anglifying,anglified,anglified
ante,antes,anteing,anted,anteed,anted,anteed
arc,arcs,arcing,arcking,arced,arcked,arced,arcked
argufy,argufies,argufying,argufied,argufied
arise,arises,arising,arisen,arose
awake,awakes,awaking,awoken,awaked
baa,baas,baaing,baaed,baaed
baby-sit,baby-sits,baby-sitting,baby-sat,baby-sat
backbite,backbites,backbiting,backbitten,backbit
back-pedal,back-pedals,back-pedaling,back-pedalling,back-pedaled,back-pedalled,back-pedaled,back-pedalled
backslide,backslides,backsliding,backslidden,backslid
ballyhoo,ballyhoos,ballyhooing,ballyhooed,ballyhooed
ballyrag,ballyrags,ballyragging,ballyragged,ballyragged
bar,bars,barring,barred,barred
barrel,barrels,barreling,barrelling,barreled,barrelled,barreled,barrelled
basify,basifies,basifying,basified,basified
bayonet,bayonets,bayoneting,bayonetting,bayoneted,bayonetted,bayoneted,bayonetted
bear,bears,bearing,borne,bore
beat,beats,beating,beaten,beat
become,becomes,becoming,become,became
bedevil,bedevils,bedeviling,bedevilling,bedeviled,bedevilled,bedeviled,bedevilled
bedim,bedims,bedimming,bedimmed,bedimmed
befall,befalls,befalling,befallen,befell
befog,befogs,befogging,befogged,befogged
beget,begets,begetting,begotten,begat,begot
begin,begins,beginning,begun,began
behold,beholds,beholding,beholden,beheld
bejewel,bejewels,bejeweling,bejewelling,bejeweled,bejewelled,bejeweled,bejewelled
belly-flop,belly-flops,belly-flopping,belly-flopped,belly-flopped
bename,benames,benaming,benamed,benamed
bend,bends,bending,bent,bent
beseech,beseeches,beseeching,beseeched,besought,beseeched,besought
beset,besets,besetting,beset,beset
bespeak,bespeaks,bespeaking,bespoken,bespoke
bespread,bespreads,bespreading,bespread,bespread
bestead,besteads,besteading,besteaded,besteaded
bestrew,bestrews,bestrewing,bestrewed,bestrewn,bestrewed
bestride,bestrides,bestriding,bestridden,bestrode
bet,bets,betting,bet,betted,bet,betted
betake,betakes,betaking,betaken,betook
bethink,bethinks,bethinking,bethought,bethought
bevel,bevels,beveling,bevelling,beveled,bevelled,beveled,bevelled
bias,biases,biasing,biassing,biased,biassed,biased,biassed
bid,bids,bidding,bid,bidden,bade,bid
bind,binds,binding,bound,bound
bird-dog,bird-dogs,bird-dogging,bird-dogged,bird-dogged
birdie,birdies,birdieing,birdied,birdied
bit,bits,bitting,bitted,bitted
bite,bites,biting,bitten,bit
blackberry,blackberries,blackberrying,blackberried,blackberried
blackleg,blacklegs,blacklegging,blacklegged,blacklegged
blat,blats,blatting,blatted,blatted
bleed,bleeds,bleeding,bled,bled
bless,blesses,blessing,blessed,blest,blessed,blest
blob,blobs,blobbing,blobbed,blobbed
blot,blots,blotting,blotted,blotted
blow,blows,blowing,blown,blew
blub,blubs,blubbing,blubbed,blubbed
blue,blues,blueing,bluing,blued,blued
blue-pencil,blue-pencills,blue-pencils,blue-penciling,blue-pencilling,blue-penciled,blue-pencilled,blue-penciled,blue-pencilled
blur,blurs,blurring,blurred,blurred
bob,bobs,bobbing,bobbed,bobbed
bog-down,bogs-down,bogging-down,bogged-down,bogged-down
boo,boos,booing,booed,booed
boogie,boogies,boogieing,boogied,boogied
boohoo,boohoos,boohooing,boohooed,boohooed
bottle-feed,bottle-feeds,bottle-feeding,bottle-fed,bottle-fed
break,breaks,breaking,broken,broke
breast-feed,breast-feeds,breast-feeding,breast-fed,breast-fed
breed,breeds,breeding,bred,bred
brei,breis,breiing,breid,breid
brevet,brevets,breveting,brevetting,breveted,brevetted,breveted,brevetted
bring,brings,bringing,brought,brought
broadcast,broadcasts,broadcasting,broadcast,broadcasted,broadcast,broadcasted
browbeat,browbeats,browbeating,browbeaten,browbeat
brutify,brutifies,brutifying,brutified,brutified
buckram,buckrams,buckraming,buckramed,buckramed
build,builds,building,built,built
bullwhip,bullwhips,bullwhipping,bullwhipped,bullwhipped
bullyrag,bullyrags,bullyragging,bullyragged,bullyragged
bunco,buncos,buncoing,buncoed,buncoed
bunko,bunkos,bunkoing,bunkoed,bunkoed
bur,burs,burring,burred,burred
burn,burns,burning,burned,burnt,burned,burnt
burst,bursts,bursting,burst,burst
bus,buses,busses,busing,bussing,bused,bussed,bused,bussed
bushel,bushels,busheling,bushelling,busheled,bushelled,busheled,bushelled
buss,busses,bussing,bussed,bussed
bust,busts,busting,bust,busted,bust,busted
buy,buys,buying,bought,bought
calque,calques,calquing,calqued,calqued
can,could
canal,canals,canaling,canalling,canaled,canalled,canaled,canalled
cancel,cancels,canceling,cancelling,canceled,cancelled,canceled,cancelled
canopy,canopies,canopying,canopied,canopied
carbonado,carbonados,carbonadoing,carbonadoed,carbonadoed
carburet,carburets,carbureting,carburetting,carbureted,carburetted,carbureted,carburetted
carol,carols,caroling,carolling,caroled,carolled,caroled,carolled
cast,casts,casting,cast,cast
catch,catches,catching,caught,caught
catnap,catnaps,catnapping,catnapped,catnapped
cavil,cavils,caviling,cavilling,caviled,cavilled,caviled,cavilled
cbel,cbels,cbeling,cbelling,cbeled,cbelled,cbeled,cbelled
channel,channels,channeling,channelling,channeled,channelled,channeled,channelled
char,chars,charring,charred,charred
chasse,chasses,chasseing,chassed,chassed
chide,chides,chiding,chid,chidden,chid,chided
chisel,chisels,chiseling,chiselling,chiseled,chiselled,chiseled,chiselled
chivy,chevies,chivies,chivvies,chevying,chivvying,chivying,chevied,chivied,chivvied,chevied,chivied,chivvied
chondrify,chondrifies,chondrifying,chondrified,chondrified
choose,chooses,choosing,chosen,chose
chop,chops,chopping,chopped,chopped
citify,citifies,citifying,citified,citified
clad,clads,cladding,clad,clad
cleave,cleaves,cleaving,cleaved,cleft,clove,cloven,cleaved,cleft
clepe,clepes,cleping,cleped,clept,yclept,cleped,clept,yclept
cling,clings,clinging,clung,clung
clog,clogs,clogging,clogged,clogged
clop,clops,clopping,clopped,clopped
clot,clots,clotting,clotted,clotted
cockneyfy,cockneyfies,cockneyfying,cockneyfied,cockneyfied
cod,cods,codding,codded,codded
cog,cogs,cogging,cogged,cogged
coif,coifs,coiffing,coiffed,coiffed
collogue,collogues,colloguing,collogued,collogued
colly,collies,collying,collied,collied
combat,combats,combating,combatting,combated,combatted,combated,combatted
come,comes,coming,come,came
complot,complots,complotting,complotted,complotted
con,cons,conning,conned,conned
coo,coos,cooing,cooed,cooed
cop,cops,copping,copped,copped
coquet,coquets,coquetting,coquetted,coquetted
cost,costs,costing,cost,cost
co-star,co-stars,co-starring,co-starred,co-starred
counsel,counsels,counseling,counselling,counseled,counselled,counseled,counselled
counterplot,counterplots,counterplotting,counterplotted,counterplotted
countersink,countersinks,countersinking,countersunk,countersank
creep,creeps,creeping,crept,crept
crossbreed,crossbreeds,crossbreeding,crossbred,crossbred
crosscut,crosscuts,crosscutting,crosscut,crosscut
cuckoo,cuckoos,cuckooing,cuckooed,cuckooed
cudgel,cudgels,cudgeling,cudgelling,cudgeled,cudgelled,cudgeled,cudgelled
cupel,cupels,cupeling,cupelling,cupeled,cupelled,cupeled,cupelled
curet,curets,curettes,curetting,curetted,curetted
curry,curries,currying,curried,curried
curse,curses,cursing,crust,cursed,crust,cursed
curvet,curvets,curveting,curvetting,curveted,curvetted,curveted,curvetted
cut,cuts,cutting,cut,cut
dag,dags,dagging,dagged,dagged
damnify,damnifies,damnifying,damnified,damnified
dandify,dandifies,dandifying,dandified,dandified
dap,daps,dapping,dapped,dapped
daresay,daresays,daresaying,daresaid,daresaid
deal,deals,dealing,dealt,dealt,delt
debar,debars,debarring,debarred,debarred
debus,debuses,debusses,debusing,debussing,debused,debussed,debused,debussed
decalcify,decalcifies,decalcifying,decalcified,decalcified
decontrol,decontrols,decontrolling,decontrolled,decontrolled
de-emphasize,de-emphasizes,de-emphasizing,de-emphasized,de-emphasized
deepfreeze,deep-freezes,deep-freezing,deep-freezed,deep-freezed
deep-fry,deep-fries,deep-frying,deep-fried,deep-fried
degas,degases,degasses,degassing,degassed,degassed
dehumidify,dehumidifies,dehumidifying,dehumidified,dehumidified
dele,deles,deleing,deled,deled
demit,demits,demitting,demitted,demitted
demulsify,demulsifies,demulsifying,demulsified,demulsified
denazify,denazifies,denazifying,denazified,denazified
denitrify,denitrifies,denitrifying,denitrified,denitrified
detoxify,detoxifies,detoxifying,detoxified,detoxified
devaluate,devaluates,devaluating,devaluated,devaluated
devil,devils,deviling,devilling,deviled,devilled,deviled,devilled
devitrify,devitrifies,devitrifying,devitrified,devitrified
diagram,diagrams,diagraming,diagramming,diagramed,diagrammed,diagramed,diagrammed
dial,dials,dialing,dialling,dialed,dialled,dialed,dialled
dib,dibs,dibbing,dibbed,dibbed
die,dies,dying,died,died
dig,digs,digging,dug,dug
dight,dights,dighting,dight,dighted,dight,dighted
dilly-dally,dilly-dallies,dilly-dallying,dilly-dallied,dilly-dallied
disannul,disannuls,disannulling,disannulled,disannulled
disbud,disbuds,disbudding,disbudded,disbudded
disembody,disembodies,disembodying,disembodied,disembodied
disembogue,disembogues,disemboguing,disembogued,disembogued
disembowel,disembowels,disemboweling,disembowelling,disemboweled,disembowelled,disemboweled,disembowelled
disenthral,disenthrall,disenthralls,disenthralling,disenthralled,disenthralled
dishevel,dishevels,disheveling,dishevelling,disheveled,dishevelled,disheveled,dishevelled
disinter,disinters,disinterring,disinterred,disinterred
ditto,dittoes,dittos,dittoing,dittoed,dittoed
dive,dives,diving,dived,dived,dove
do,does,doing,done,did
dog,dogs,dogging,dogged,dogged
don,dons,donning,donned,donned
dot,dots,dotting,dotted,dotted
double-tongue,double-tongues,double-tonguing,double-tongued,double-tongued
draw,draws,drawing,draws,drew
dream,dreams,dreaming,dreamed,dreamt,dreamed,dreamt
dree,drees,dreeing,dreed,dreed
drink,drinks,drinking,drunk,drank
drive,drives,driving,driven,drove
drivel,drivels,driveling,drivelling,driveled,drivelled,driveled,drivelled
drop,drops,dropping,dropped,dropped
duel,duels,dueling,duelling,dueled,duelled,dueled,duelled
dulcify,dulcifies,dulcifying,dulcified,dulcified
dup,dups,dupping,dupped,dupped
dwell,dwells,dwelling,dwelled,dwelt,dwelled,dwelt
dye,dyes,dyeing,dyed,dyed
eat,eats,eating,eaten,ate
embus,embuses,embusses,embusing,embussing,embused,embussed,embused,embussed
emcee,emcees,emceeing,emceed,emceed
empanel,empanels,empaneling,empanelling,empaneled,empanelled,empaneled,empanelled
enamel,enamels,enameling,enamelling,enameled,enamelled,enameled,enamelled
endue,endues,enduing,endued,endued
englut,engluts,englutting,englutted,englutted
ensue,ensues,ensuing,ensued,ensued
entrammel,entrammels,entrammelling,entrammelled,entrammelled
enwind,enwinds,enwinding,enwound,enwound
enwrap,enwraps,enwrapping,enwrapped,enwrapped
equal,equals,equaling,equalling,equaled,equalled,equaled,equalled
esterify,esterifies,esterifying,esterified,esterified
estop,estops,estopping,estopped,estopped
etherify,etherifies,etherifying,etherified,etherified
eye,eyes,eyeing,eying,eyed,eyed
facet,facets,faceting,facetting,faceted,facetted,faceted,facetted
fall,falls,falling,fallen,fell
featherbed,featherbeds,featherbedding,featherbedded,featherbedded
feed,feeds,feeding,fed,fed
feel,feels,feeling,felt,felt
fight,fights,fighting,fought,fought
filagree,filagrees,filagreeing,filagreed,filagreed
fill up,filled up
fin,fins,finning,finned,finned
find,finds,finding,found,found
fine-draw,fine-draws,fine-drawing,fine-drawn,fine-drew
fit,fits,fitting,fit,fitted,fit,fitted
flam,flams,flamming,flammed,flammed
flannel,flannels,flanneling,flannelling,flanneled,flannelled,flanneled,flannelled
flee,flees,fleeing,fled,fled
flimflam,flimflams,flimflamming,flimflammed,flimflammed
fling,flings,flinging,flung,flung
flip-flop,flip-flops,flip-flopping,flip-flopped,flip-flopped
floodlight,floodlights,floodlighting,floodlit,floodlit
flub,flubbed,flubbed
flurry,flurries,flurrying,flurried,flurried
fly,flies,flying,flown,flew
flyblow,flyblows,flyblowing,flyblown,flyblew
fog,fogs,fogging,fogged,fogged
forbear,forbears,forbearing,forborne,forbore
forbid,forbad,forbids,forbidding,forbidden,forbad,forbade
force-feed,force-feeds,force-feeding,force-fed,force-fed
fordo,fordoes,fordoing,fordone,fordid
forecast,forecasts,forecasting,forecast,forecasted,forecast,forecasted
foredo,foredoes,foredoing,foredone,foredid
forego,foregoes,foregoing,foregone,forewent
foreknow,foreknows,foreknowing,foreknown,foreknew
forerun,foreruns,forerunning,foreran,foreran
foresee,foresees,foreseeing,foreseen,foresaw
forespeak,forespeaks,forespeaking,forespoken,forespoke
foretell,foretells,foretelling,foretold,foretold
forget,forgets,forgetting,forgotten,forgot
forgive,forgives,forgiving,forgiven,forgave
forgo,forgoes,forgoing,forgone,forwent
format,formats,formatting,formatted,formatted
forsake,forsakes,forsaking,forsaken,forsook
forspeak,forspeaks,forspeaking,forspoken,forspoke
forswear,forswears,forswearing,forsworn,forswore
frap,fraps,frapping,frapped,frapped
free,frees,freeing,freed,freed
freeze,freezes,freezing,frozen,froze
freeze-dry,freeze-dries,freeze-drying,freeze-dried,freeze-dried
frenchify,frenchifies,frenchifying,frenchified,frenchified
frig,frigs,frigging,frigged,frigged
frit,frits,fritting,fritted,fritted
frivol,frivols,frivoling,frivolling,frivoled,frivolled,frivoled,frivolled
fuel,fuels,fueling,fuelling,fueled,fuelled,fueled,fuelled
funnel,funnels,funneling,funnelling,funneled,funnelled,funneled,funnelled
fur,furs,furring,furred,furred
gad,gads,gadding,gadded,gadded
gainsay,gainsays,gainsaying,gainsaid,gainsaid
gam,gams,gamming,gammed,gammed
gambol,gambols,gamboling,gambolling,gamboled,gambolled,gamboled,gambolled
gan,gans,ganning,ganned,ganned
garnishee,garnishees,garnisheeing,garnisheed,garnisheed
gas,gases,gasses,gassing,gassed,gassed
geld,gelds,gelding,gelded,gelt,gelded,gelt
gen-up,gens-up,genning-up,genned-up,genned-up
get,gets,getting,got,gotten,got
get lost,gets lost,got lost,gotten lost,getting lost
get started,gets started,getting started,got started,got started
ghostwrite,ghostwrites,ghostwriting,ghostwritten,ghostwrote
gib,gibs,gibbing,gibbed,gibbed
giftwrap,giftwraps,giftwrapping,giftwrapped,giftwrapped
gild,gilds,gilding,gilded,gilt,gilded,gilt
gip,gips,gipping,gipped,gipped
gird,girds,girding,girded,girt,girded,girt
give,gives,giving,given,gave
glom,glomming,glommed,glommed
glue,glues,gluing,glued,glued
gnaw,gnaws,gnawing,gnawed,gnawn,gnawed
go,goes,going,gone,went
go deep,goes deep,going deep,gone deep,went deep
goose-step,goose-steps,goose-stepping,goose-stepped,goose-stepped
grab,grabs,grabbing,grabbed,grabbed
grave,graves,graving,graven,graved
gravel,gravels,graveling,gravelling,graveled,gravelled,graveled,gravelled
gree,grees,greeing,greed,greed
grind,grinds,grinding,ground,ground
grovel,grovels,groveling,grovelling,groveled,grovelled,groveled,grovelled
grow,grows,growing,grown,grew
gumshoe,gumshoes,gumshoeing,gumshoed,gumshoed
hallo,hallos,halloing,halloed,halloed
halloo,halloos,hallooing,hallooed,hallooed
halo,haloes,halos,haloing,haloed,haloed
hamstring,hamstrings,hamstringing,hamstringed,hamstrung,hamstring,hamstrung
handfeed,handfeeds,handfeeding,handfed,handfed
handicap,handicaps,handicapping,handicapped,handicapped
hand-knit,hand-knits,hand-knitting,hand-knitted,hand-knitted
handsel,handsels,handselling,handselled,handselled
hang,hangs,hanging,hanged,hung,hanged,hung
hansel,hansels,hanseling,hanseled,hanseled
has,have,having,had,had
hatchel,hatchels,hatcheling,hatchelling,hatcheled,hatchelled,hatcheled,hatchelled
hear,hears,hearing,heard,heard
heave,heaves,heaving,heaved,hove,heaved,hove
hiccup,hiccups,hiccuping,hiccupping,hiccuped,hiccupped,hiccuped,hiccupped
hide,hides,hiding,hid,hidden,hid,hided
hie,hieing,hying,hied,hied
high-hat,high-hats,high-hatting,high-hatted,high-hatted
hinny,hinnies,hinnying,hinnied,hinnied
hit,hits,hitting,hit,hit
hocus,hocuses,hocusing,hocussing,hocused,hocussed,hocused,hocussed
hocus-pocus,hocus-pocuses,hocus-pocusing,hocus-pocussing,hocus-pocused,hocus-pocussed,hocus-pocused,hocus-pocussed
hoe,hoes,hoeing,hoed,hoed
hold,holds,holding,held,held
honey,honeys,honeying,honeyed,honied,honeyed,honied
hop,hops,hopping,hopped,hopped
housel,housels,houseling,houselling,houseled,houselled,houseled,houselled
hovel,hovels,hoveling,hovelling,hoveled,hovelled,hoveled,hovelled
hurry,hurries,hurrying,hurried,hurried
hurt,hurts,hurting,hurt,hurt
hypertrophy,hypertrophies,hypertrophying,hypertrophied,hypertrophied
imbrue,imbrues,imbruing,imbrued,imbrued
imbue,imbues,imbuing,imbued,imbued
impanel,impanells,impanels,impaneling,impanelling,impaneled,impanelled,impaneled,impanelled
inbreed,inbreeds,inbreeding,inbred,inbred
indue,indues,induing,indued,indued
indwell,indwells,indwelling,indwelt,indwelt
initial,initials,initialing,initialling,initialed,initialled,initialed,initialled
inlay,inlays,inlaying,inlaid,inlaid
inlet,inlets,inlet,inlet
input,inputs,inputting,input,inputted,input,inputted
inset,insets,insetting,inset,insetted,inset,insetted
inspan,inspans,inspanning,inspanned,inspanned
instal,install,instals,installing,installed,installed
interbreed,interbreeds,interbreeding,interbred,interbred
intercrop,intercrops,intercropping,intercropped,intercropped
intercut,intercuts,intercutting,intercut,intercut
interlay,interlays,interlaying,interlaid,interlaid
intermit,intermits,intermitting,intermitted,intermitted
interplead,interpleads,interpleading,interpleaded,interpled,interpleaded,interpled
interstratify,interstratifies,interstratifying,interstratified,interstratified
interweave,interweaves,interweaving,interwoven,interweaved,interwove
intromit,intromits,intromitting,intromitted,intromitted
inweave,inweaves,inweaving,inwoven,inweaved
inwrap,inwraps,inwrapping,inwrapped,inwrapped
issue,issues,issuing,issued,issued
jar,jars,jarring,jarred,jarred
jell,jells,jelling,jelled,jelled
jellify,jellifies,jellifying,jellified,jellified
jerry-build,jerry-builds,jerry-building,jerry-built,jerry-built
jewel,jewels,jeweling,jewelling,jeweled,jewelled,jeweled,jewelled
jitterbug,jitterbugs,jitterbugging,jitterbugged,jitterbugged
job,jobs,jobbing,jobbed,jobbed
jog,jogs,jogging,jogged,jogged
jollify,jollifies,jollifying,jollified,jollified
jot,jots,jotting,jotted,jotted
joypop,joypops,joypopping,joypopped,joypopped
joy-ride,joy-rides,joy-riding,joy-ridden,joy-rode
jut,juts,jutting,jutted,jutted
keep,keeps,keeping,kept,kept
kennel,kennels,kenneling,kennelling,kenneled,kennelled,kenneled,kennelled
kernel,kernels,kerneling,kernelling,kerneled,kernelled,kerneled,kernelled
kidnap,kidnaps,kidnaping,kidnapping,kidnaped,kidnapped,kidnaped,kidnapped
knap,knaps,knapping,knapped,knapped
kneel,kneels,kneeling,kneeled,knelt,kneeled,knelt
knit,knits,knitting,knit,knitted,knit,knitted
knot,knots,knotting,knotted,knotted
know,knows,knowing,known,knew
KO,KO's,F,Knock Out,KO'ing,KO'd,KO'd
label,labels,labeling,labelling,labeled,labelled,labeled,labelled
lade,lades,lading,laden,laded
ladify,ladyfies,ladyfying,ladyfied,ladyfied
laicize,laicizes,laicizing,laicized,laicized
lallygag,lallygags,lallygagging,lallygagged,lallygagged
lam,lams,lamming,lammed,lammed
lasso,lassoes,lassos,lassoing,lassoed,lassoed
laurel,laurels,laureling,laurelling,laureled,laurelled,laureled,laurelled
lay,lays,laying,laid,laid
lead,leads,leading,led,led
lean,leans,leaning,leaned,leant,leaned,leant
leap,leaps,leaping,leaped,leapt,leaped,leapt
leapfrog,leapfrogs,leapfrogging,leapfrogged,leapfrogged
learn,learns,learning,learned,learnt,learned,learnt
leave,leaves,leaving,left,left
leave undone,leaves undone,leaving undone,left undone,left undone
legitimize,legitimizes,legitimizing,legitimized,legitimized
lend,lends,lending,lent,lent
let,lets,letting,let,let
level,levels,leveling,levelling,leveled,levelled,leveled,levelled
libel,libels,libeling,libelling,libeled,libelled,libeled,libelled
lie,lies,lying,lain,lay
light,lights,lighting,lighted,lit,lighted,lit
lignify,lignifies,lignifying,lignified,lignified
lip-read,lip-reads,lip-reading,lip-read,lip-read
liquify,liquifies,liquifying,liquified,liquified
lob,lobs,lobbing,lobbed,lobbed
log,logs,logging,logged,logged
lop,lops,lopping,lopped,lopped
lose,loses,losing,lost,lost
lot,lots,lotting,lotted,lotted
machine-gun,machine-guns,machine-gunning,machine-gunned,machine-gunned
make,makes,making,made,made
man,mans,manning,manned,manned
manumit,manumits,manumitting,manumitted,manumitted
mar,mars,marring,marred,marred
marcel,marcels,marcelling,marcelled,marcelled
marshal,marshals,marshaling,marshalling,marshaled,marshalled,marshaled,marshalled
marvel,marvels,marveling,marvelling,marveled,marvelled,marveled,marvelled
may,might
mean,means,meaning,meant,meant
medal,medals,medaling,medalling,medaled,medalled,medaled,medalled
meet,meets,meeting,met,met
melt,melts,melting,molten,melted
metal,metals,metaling,metalling,metaled,metalled,metaled,metalled
metrify,metrifies,metrifying,metrified,metrified
militate against,militates against,militating against,militated against,militated against
minify,minifies,minifying,minified,minified
misbecome,misbecomes,misbecoming,misbecame,misbecame
miscast,miscasts,miscasting,miscast,miscast
misconstrue,misconstrues,misconstruing,misconstrued,misconstrued
misdeal,misdeals,misdealing,misdealt,misdealt
misgive,misgives,misgiving,misgiven,misgave
mishear,mishears,mishearing,misheard,misheard
mishit,mishits,mishitting,mishit,mishit
mislay,mislays,mislaying,mislaid,mislaid
mislead,misleads,misleading,misled,misled
misplead,mispleads,mispleading,mispleaded,mispled,mispleaded,mispled
misread,misreads,misreading,misread,misread
misspell,misspells,misspelling,mispelt,misspelled,mispelt,misspelled
misspend,misspends,misspending,misspent,misspent
mistake,mistakes,mistaking,mistaken,mistook
misunderstand,misunderstands,misunderstanding,misunderstood,misunderstood
mob,mobs,mobbing,mobbed,mobbed
model,models,modeling,modelling,modeled,modelled,modeled,modelled
moonlight,moonlights,moonlighting,moonlighted,moonlighted
mow,mows,mowing,mowed,mown,mowed
mug,mugs,mugging,mugged,mugged
nickel,nickels,nickeling,nickelling,nickeled,nickelled,nickeled,nickelled
nidify,nidifies,nidifying,nidified,nidified
nid-nod,nid-nods,nid-nodding,nid-nodded,nid-nodded
niello,niellos,nielloing,nielloed,nielloed
nitrify,nitrifies,nitrifying,nitrified,nitrified
nonplus,nonpluses,nonplusses,nonplusing,nonplussing,nonplused,nonplussed,nonplused,nonplussed
objectify,objectifies,objectifying,objectified,objectified
offset,offsets,offsetting,offset,offset
opsonize,opsonizes,opsonizing,opsonized,opsonized
outbid,outbids,outbidding,outbidden,outbid,outbidden
outbreed,outbreeds,outbreeding,outbred,outbred
outdo,outdoes,outdoing,outdone,outdid
outfit,outfits,outfitting,outfitted,outfitted
outgas,outgasses,outgassing,outgassed,outgassed
outgeneral,outgenerals,outgeneraling,outgeneralling,outgeneraled,outgeneralled,outgeneraled,outgeneralled
outgo,outgoes,outgoing,outgone,outwent
outgrow,outgrows,outgrowing,outgrown,outgrew
outlay,outlays,outlaying,outlaid,outlaid
outman,outmans,outmanning,outmanned,outmanned
outride,outrides,outriding,outridden,outrode
outrun,outruns,outrunning,outran,outran
outsell,outsells,outselling,outsold,outsold
outshine,outshines,outshining,outshined,outshone,outshined,outshone
outshoot,outshoots,outshooting,outshot,outshot
outspan,outspans,outspanning,outspanned,outspanned
outspread,outspreads,outspreading,outspread,outspread
outstand,outstands,outstanding,outstood,outstood
outthink,outthinks,outthinking,outthought,outthougth
outwear,outwears,outwearing,outworn,outwore
overbear,overbears,overbearing,overborne,overbore
overbid,overbids,overbidding,overbidden,overbid
overblow,overblows,overblowing,overblown,overblew
overbuild,overbuilds,overbuilding,overbuilt,overbuilt
overcast,overcasts,overcasting,overcast,overcast
overcome,overcomes,overcoming,overcome,overcame
overcrop,overcrops,overcropping,overcropped,overcropped
overdo,overdoes,overdoing,overdone,overdid
overdraw,overdraws,overdrawing,overdrawn,overdrew
overdrive,overdrives,overdriving,overdriven,overdrove
overeat,overeats,overeating,overeaten,overate
overflow,overflows,overflowing,overflowed,overflowed
overfly,overflies,overflying,overflew,overflew
overgrow,overgrows,overgrowing,overgrown,overgrew
overhang,overhangs,overhanging,overhung,overhung
overhear,overhears,overhearing,overheard,overheard
overissue,overissues,overissuing,overissued,overissued
overlap,overlaps,overlapping,overlapped,overlapped
overlay,overlays,overlaying,overlaid,overlaid
overlie,overlay,overlies,overlying,overlain,overlain
overload,overloads,overloading,overladen,overloaded,overloaded
overman,overmans,overmanning,overmanned,overmanned
overpay,overpays,overpaying,overpaid,overpaid
override,overrides,overriding,overridden,overrode
overrun,overruns,overrunning,overrun,overran
oversee,oversees,overseeing,overseen,oversaw
oversell,oversells,overselling,oversold,oversold
overset,oversets,oversetting,overset,overset
overshoot,overshoots,overshooting,overshot,overshot
oversleep,oversleeps,oversleeping,overslept,overslept
overspend,overspends,overspending,overspent,overspent
overstep,oversteps,overstepping,overstepped,overstepped
overtake,overtakes,overtaking,overtaken,overtook
overthrow,overthrows,overthrowing,overthrown,overthrew
overtop,overtops,overtopping,overtopped,overtopped
overwind,overwinds,overwinding,overwound,overwound
overwrite,overwrites,overwriting,overwritten,overwrote
pandy,pandies,pandying,pandied,pandied
panel,panels,paneling,panelling,paneled,panelled,paneled,panelled
panic,panics,panicking,panicked,panicked
parallel,parallels,paralleling,parallelling,paralleled,parallelled,paralleled,parallelled
parcel,parcels,parceling,parcelling,parceled,parcelled,parceled,parcelled
parenthesize,parenthesizes,parenthesizing,parenthesized,parenthesized
partake,partakes,partaking,partaken,partook
pasquinade,pasquils,pasquinades,pasquilling,pasquinading,pasquilled,pasquinaded,pasquilled,pasquinaded
pay,pays,paying,paid,paid
pedal,pedals,pedaling,pedalling,pedaled,pedalled,pedaled,pedalled
pencil,pencils,penciling,pencilling,penciled,pencilled,penciled,pencilled
pettifog,pettifogs,pettifogging,pettifogged,pettifogged
phantasy,phantasies,phantasying,phantasied,phantasied
photocopy,photocopies,photocopying,photocopied,photocopied
photomap,photomaps,photomapping,photomapped,photomapped
photoset,photosets,photosetting,photoset,photoset
pie,pies,pieing,piing,pied,pied
pinch-hit,pinch-hits,pinch-hitting,pinch-hit,pinch-hit
pistol,pistols,pistoling,pistolling,pistoled,pistolled,pistoled,pistolled
pistol-whip,pistol-whips,pistol-whipping,pistol-whipped,pistol-whipped
pitapat,pitapats,pitapatting,pitapatted,pitapatted
plat,plats,platting,platted,platted
plead,pleads,pleading,pleaded,pled,pleaded,pled
plod,plods,plodding,plodded,plodded
plop,plops,plopping,plopped,plopped
plot,plots,plotting,plotted,plotted
pod,pods,podding,podded,podded
pommel,pommels,pommeling,pommelling,pommeled,pommelled,pommeled,pommelled
pop,pops,popping,popped,popped
pot,pots,potting,potted,potted
precancel,precancels,precanceling,precancelling,precanceled,precancelled,precanceled,precancelled
precast,precasts,precasting,precast,precast
preoccupy,preoccupies,preoccupying,preoccupied,preoccupied
prepay,prepays,prepaying,prepaid,prepaid
preset,presets,presetting,preset,preset
presignify,presignifies,presignifying,presignified,presignified
pretermit,pretermits,pretermitting,pretermitted,pretermitted
prod,prods,prodding,prodded,prodded
program,programmes,programs,programming,programed,programmed,programed,programmed
prologue,prologs,prologues,prologing,prologuing,prologed,prologued,prologed,prologued
proofread,proofreads,proofreading,proofread,proofread
prop,props,propping,propped,propped
prove,proves,proving,proven,proved
pummel,pummels,pummeling,pummelling,pummeled,pummelled,pummeled,pummelled
pursue,pursues,pursuing,pursued,pursued
put,puts,putting,put,put
quarrel,quarrels,quarreling,quarrelling,quarreled,quarrelled,quarreled,quarrelled
quick-freeze,quick-freezes,quick-freezing,quick-frozen,quick-froze
radio,radios,radioing,raoed,raoed
rappel,rappels,rappelling,rappelled,rappelled
ravel,ravels,raveling,ravelling,raveled,ravelled,raveled,ravelled
raz-cut,raz-cuts,raz-cutting,raz-cut,raz-cut
razee,razees,razeeing,razeed,razeed
read,reads,reading,read,read
reave,reaves,reaving,reaved,reaved
rebel,rebels,rebelling,rebelled,rebelled
rebind,rebinds,rebinding,rebound,rebound
rebuild,rebuilds,rebuilding,rebuilt,rebuilt
recast,recasts,recasting,recast,recast
recce,recces,recceing,recced,recceed,recced,recceed
recommit,recommits,recommitting,recommitted,recommitted
recopy,recopies,recopying,recopied,recopied
redd,redds,redding,redded,redded
redo,redoes,redoing,redone,redid
red-pencil,red-pencills,red-pencilling,red-pencillling,red-pencilled,red-pencillled,red-pencilled,red-pencillled
refuel,refuels,refueling,refuelling,refueled,refuelled,refueled,refuelled
rehear,rehears,rehearing,reheard,reheard
relay,relays,relaying,relaid,relaid
rely,relies,relying,relied,relied
remake,remakes,remaking,remade,remade
rend,rends,rending,rent,rent
repay,repays,repaying,repaid,repaid
replevy,replevies,replevying,replevied,replevied
rerun,reruns,rerunning,rerun,reran
resell,resells,reselling,resold,resold
reset,resets,resetting,reset,reset
resit,resits,resitting,resat,resat
ret,rets,retting,retted,retted
retake,retakes,retaking,retaken,retook
retell,retells,retelling,retold,retold
rethink,rethinks,rethinking,rethought,rethought
retread,retreads,retreading,retreaded,retreaded
re-tread,re-treads,re-treading,re-trodden,re-trod
retrofit,retrofits,retrofitting,retrofitted,retrofitted
retry,retries,retrying,retried,retried
reunify,reunifies,reunifying,reunified,reunified
revalorize,revalorizes,revalorizing,revalorized,revalorized
revel,revels,reveling,revelling,reveled,revelled,reveled,revelled
revet,revets,revetting,revetted,revetted
rewind,rewinds,rewinding,rewound,rewound
rewrite,rewrites,rewriting,rewritten,rewrote
ricochet,ricochets,ricocheting,ricochetting,ricocheted,ricochetted,ricocheted,ricochetted
rid,rids,ridding,rid,ridded,rid,ridded
ride,rides,riding,ridden,rode
rigidify,rigidifies,rigidifying,rigidified,rigidified
ring,rings,ringing,rung,rang
rise,rises,rising,risen,rose
rival,rivals,rivaling,rivalling,rivaled,rivalled,rivaled,rivalled
rive,rives,riving,riven,rived
rob,robs,robbing,robbed,robbed
rot,rots,rotting,rotted,rotted
roughcast,roughcasts,roughcasting,roughcast,roughcast
rough-dry,rough-dries,rough-drying,rough-dried,rough-dried
rough-hew,rough-hews,rough-hewing,rough-hewed,rough-hewed
rowel,rowels,roweling,rowelling,roweled,rowelled,roweled,rowelled
rue,rues,ruing,rued,rued
ruggedize,ruggedizes,ruggedizing,ruggedized,ruggedized
run,runs,running,run,ran
saccharify,saccharifies,saccharifying,saccharified,saccharified
sandbag,sandbags,sandbagging,sandbagged,sandbagged
sand-cast,sand-casts,sand-casting,sand-cast,sand-cast
saponify,saponifies,saponifying,saponified,saponified
saute,sautes,sauteing,sauted,sauteed,sauted,sauteed
saw,saws,sawing,sawed,sawn,sawed
say,says,saying,said,said
scag,scags,scagging,scagged,scagged
scar,scars,scarring,scarred,scarred
scorify,scorifies,scorifying,scorified,scorified
scry,scries,scrying,scried,scried
scurry,scurries,scurrying,scurried,scurried
see,sees,seeing,seen,saw
seed,seeds,seeding,seeded,seeded
seek,seeks,seeking,sought,sought
sell,sells,selling,sold,sold
send,sends,sending,sent,sent
set,sets,setting,set,set
shake,shakes,shaking,shaken,shook
shall,should
sharecrop,sharecrops,sharecropping,sharecropped,sharecropped
shave,shaves,shaving,shaven,shaved
shear,shears,shearing,sheared,shorn,sheared
shed,sheds,shedding,shed,shed
shend,shends,shending,shent,shent
shikar,shikars,shikarring,shikarred,shikarred
shillyshally,shillyshallies,shillyshallying,shillyshallied,shillyshallied
shim,shims,shimming,shimmed,shimmed
shimmy,shimmies,shimmying,shimmied,shimmied
shine,shines,shining,shined,shone,shined,shone
shit,shits,shitting,shat,shit,shat,shit
shoe,shoes,shoeing,shod,shoed,shod,shoed
shoot,shoots,shooting,shot,shot
shop,shops,shopping,shopped,shopped
shot,shots,shotting,shotted,shotted
shovel,shovels,shoveling,shovelling,shoveled,shovelled,shoveled,shovelled
show,shows,showing,showed,shown,showed
shred,shredding,shred,shredded,shred,shredded
shrink,shrinks,shrinking,shrunk,shrunken,shrank,shrunk
shrink-wrap,shrink-wraps,shrink-wrapping,shrink-wrapped,shrink-wrapped
shrive,shrives,shriving,shriven,shrived
shrivel,shrivels,shriveling,shrivelling,shriveled,shrivelled,shriveled,shrivelled
shut,shuts,shutting,shut,shut
shy,shies,shying,shied,shied
sight-read,sight-reads,sight-reading,sight-read,sight-read
sightsee,sightsees,sightseeing,sightseen,sightsaw
signal,signals,signaling,signalling,signaled,signalled,signaled,signalled
silicify,silicifies,silicifying,silicified,silicified
sin,sins,sinning,sinned,sinned
sing,sings,singing,sung,sang
single-step,single-steps,single-stepping,single-stepped,single-stepped
sink,sinks,sinking,sunk,sunken,sank,sunk
sit,sits,sitting,sat,sat
skelly,skellies,skellying,skellied,skellied
sken,skens,skenning,skenned,skenned
sket,skets,sketting,sketted,sketted
skinny-dip,skinny-dips,skinny-dipping,skinny-dipped,skinny-dipped
skin-pop,skin-pops,skin-popping,skin-popped,skin-popped
sky,skies,skying,skied,skyed,skied,skyed
skydive,skydives,skydiving,skydived,skydived
slay,slays,slaying,slain,slew
sleep,sleeps,sleeping,slept,slept
slide,slides,sliding,slid,slidden,slid
sling,slings,slinging,slung,slung
slink,slinks,slinking,slunk,slunk
slit,slits,slitting,slit,slit
slog,slogs,slogging,slogged,slogged
slop,slops,slopping,slopped,slopped
slot,slots,slotting,slotted,slotted
slur,slurs,slurring,slurred,slurred
smell,smells,smelling,smelled,smelt,smelled,smelt
smite,smites,smiting,smitten,smote
sned,sneds,snedding,snedded,snedded
snivel,snivels,sniveling,snivelling,sniveled,snivelled,sniveled,snivelled
sob,sobs,sobbing,sobbed,sobbed
sod,sods,sodding,sodded,sodded
soft-pedal,soft-pedals,soft-pedaling,soft-pedalling,soft-pedaled,soft-pedalled,soft-pedaled,soft-pedalled
solemnify,solemnifies,solemnifying,solemnified,solemnified
soothsay,soothsays,soothsaying,soothsaid,soothsaid
sop,sops,sopping,sopped,sopped
sow,sows,sowing,sowed,sown,sowed
spancel,spancels,spanceling,spancelling,spanceled,spancelled,spanceled,spancelled
spar,spars,sparring,sparred,sparred
spat,spats,spatting,spatted,spatted
speak,speaks,speaking,spoken,spoke
speed,speeds,speeding,sped,speeded,sped,speeded
spell,spells,spelling,spelled,spelt,spelled,spelt
spellbind,spellbinds,spellbinding,spellbound,spellbound
spend,spends,spending,spent,spent
spill,spills,spilling,spilled,spilled
spin,spins,spinning,spun,span,spun
spin-dry,spin-dries,spin-drying,spin-dried,spin-dried
spiral,spirals,spiraling,spiralling,spiraled,spiralled,spiraled,spiralled
spit,spits,spitting,spat,spit,spat,spit
split,splits,splitting,split,split
spoil,spoils,spoiling,spoiled,spoilt,spoiled,spoilt
spoon-feed,spoon-feeds,spoon-feeding,spoon-fed,spoon-fed
spot,spots,spotting,spotted,spotted
spotlight,spotlights,spotlighting,spotlighted,spotlit,spotlighted,spotlit
spread,spreads,spreading,spread,spread
spring,springs,springing,sprung,sprang,sprung
spue,spues,spuing,spued,spued
spur,spurs,spurring,spurred,spurred
squat,squats,squatting,squatted,squatted
stall-feed,stall-feeds,stall-feeding,stall-fed,stall-fed
stand,stands,standing,stood,stood
star,stars,starring,starred,starred
steal,steals,stealing,stolen,stole
stellify,stellifies,stellifying,stellified,stellified
stencil,stencils,stenciling,stencilling,stenciled,stencilled,stenciled,stencilled
stick,sticks,sticking,stuck,stuck
sting,stings,stinging,stung,stung
stink,stinks,stinking,stunk,stank,stunk
strew,strews,strewing,strewed,strewn,strewed
stride,strides,striding,stridden,strode
strike,strikes,striking,struck,struck
string,strings,stringing,strung,strung
strive,strives,striving,strived,striven,strived,strove
strop,strops,stropping,stropped,stropped
stucco,stuccoes,stuccos,stuccoing,stuccoed,stuccoed
stultify,stultifies,stultifying,stultified,stultified
stum,stums,stumming,stummed,stummed
stymie,stymies,stymieing,stymying,stymied,stymied
sublet,sublets,subletting,sublet,sublet
subtotal,subtotals,subtotaling,subtotalling,subtotaled,subtotalled,subtotaled,subtotalled
sue,sues,suing,sued,sued
sulphuret,sulphurets,sulphureting,sulphuretting,sulphureted,sulphuretted,sulphureted,sulphuretted
swab,swabs,swabbing,swabbed,swabbed
swag,swags,swagging,swagged,swagged
swap,swaps,swops,swapping,swopping,swapped,swopped,swapped,swopped
swat,swats,swatting,swatted,swatted
swear,swears,swearing,sworn,swore
sweep,sweeps,sweeping,swept,swept
swell,swells,swelling,swelled,swollen,swelled
swim,swims,swimming,swum,swam
swing,swings,swinging,swung,swung
swivel,swivels,swiveling,swivelling,swiveled,swivelled,swiveled,swivelled
syllabicate,syllabicates,syllabicating,syllabicated,syllabicated
symbol,symbols,symboling,symbolling,symboled,symbolled,symboled,symbolled
take,takes,taking,taken,took
talc,talcs,talcing,talcking,talced,talcked,talced,talcked
tar,tars,tarring,tarred,tarred
tassel,tassels,tasseling,tasselling,tasseled,tasselled,tasseled,tasselled
tat,tats,tatting,tatted,tatted
tattoo,tattoos,tattooing,tattooed,tattooed
taxi,taxies,taxiing,taxying,taxied,taxied
teach,teaches,teaching,taught,taught
tear,tears,tearing,torn,tore
teasel,teasels,teaselling,teaseled,teaselled,teaseled,teaselled
ted,teds,tedding,tedded,tedded
tee,tees,teeing,teed,teed
te-hee,te-hees,te-heeing,te-heed,te-heed
telecast,telecasts,telecasting,telecasted,telecasted
tell,tells,telling,told,told
tepefy,tepefies,tepefying,tepefied,tepefied
think,thinks,thinking,thought,thought
thrive,thrives,thriving,thrived,thriven,thrived,throve
throw,throws,throwing,thrown,threw
thrust,thrusts,thrusting,thrust,thrust
tinge,tinges,tingeing,tinging,tinged,tinged
tinsel,tinsels,tinseling,tinselling,tinseled,tinselled,tinseled,tinselled
tittup,tittups,tittuping,tittupping,tittuped,tittupped,tittuped,tittupped
tog,togs,togging,togged,togged
top,tops,topping,topped,topped
torrefy,torrefies,torrefying,torrefied,torrefied
tot,tots,totting,totted,totted
total,totals,totaling,totalling,totaled,totalled,totaled,totalled
towel,towels,toweling,towelling,toweled,towelled,toweled,towelled
trammel,tramels,trameling,tramelling,trameled,tramelled,trameled,tramelled
transvalue,transvalues,transvaluing,transvalued,transvalued
traumatize,traumatizes,traumatizing,traumatized,traumatized
travel,travels,traveling,travelling,traveled,travelled,traveled,travelled
tread,treads,treading,trod,trodden,trod
trig,trigs,trigging,trigged,trigged
trot,trots,trotting,trotted,trotted
trowel,trowels,troweling,trowelling,troweled,trowelled,troweled,trowelled
true,trues,trueing,truing,trued,trued
tumefy,tumefies,tumefying,tumefied,tumefied
tun,tuns,tunning,tunned,tunned
tunnel,tunnels,tunneling,tunnelling,tunneled,tunnelled,tunneled,tunnelled
typecast,typecasts,typecasting,typecast,typecast
typeset,typesets,typesetting,typeset,typeset
typewrite,typewrites,typewriting,typewritten,typewrote
uglify,uglifies,uglifying,uglified,uglified
unbend,unbends,unbending,unbent,unbent
unbind,unbinds,unbinding,unbound,unbound
uncap,uncaps,uncapping,uncapped,uncapped
unclog,unclogs,unclogging,unclogged,unclogged
unclothe,unclothes,unclothing,unclothed,unclothed
underbid,underbids,underbidding,underbid,underbid
underbuy,underbuys,underbuying,underbought,underbought
undercut,undercuts,undercutting,undercut,undercut
underfeed,underfeeds,underfeeding,underfed,underfed
undergird,undergirds,undergirding,undergirded,undergirded
undergo,undergoes,undergoing,undergone,underwent
underlay,underlays,underlaying,underlaid,underlaid
underlet,underlets,underletting
underlie,underlies,underlying,underlain,underlay
underpay,underpays,underpaying,underpaid,underpaid
underpin,underpins,underpinning,underpinned,underpinned
underprop,underprops,underpropping,underpropped,underpropped
undersell,undersells,underselling,undersold,undersold
underset,undersets,undersetting,underset,underset
undershoot,undershoots,undershooting,undershot,undershot
understand,understands,understanding,understood,understood
undertake,undertakes,undertaking,undertaken,undertook
undervalue,undervalues,undervaluing,undervalued,undervalued
underwrite,underwrites,underwriting,underwritten,underwrote
undo,undoes,undoing,undone,undid
unfit,unfits,unfitting,unfitted,unfitted
unfreeze,unfreezes,unfreezing,unfrozen,unfroze
unkennel,unkennels,unkenneling,unkennelling,unkenneled,unkennelled,unkenneled,unkennelled
unknit,unknits,unknitting,unknit,unknitted,unknit,unknitted
unlay,unlays,unlaying,unlaid,unlaid
unlearn,unlearns,unlearning,unlearned,unlearned
unmake,unmakes,unmaking,unmade,unmade
unman,unmans,unmanning,unmanned,unmanned
unpeg,unpegs,unpegging,unpegged,unpegged
unpin,unpins,unpinning,unpinned,unpinned
unplug,unplugs,unplugging,unplugged,unplugged
unravel,unravels,unraveling,unravelling,unraveled,unravelled,unraveled,unravelled
unreeve,unreeves,unreeving,unreeved,unreeved
unrig,unrigs,unrigging,unrigged,unrigged
unsay,unsays,unsaying,unsaid,unsaid
unship,unships,unshipping,unshipped,unshipped
unsling,unslings,unslinging,unslung,unslung
unsnap,unsnaps,unsnapping,unsnapped,unsnapped
unspeak,unspeaks,unspeaking,unspoken,unspoke
unsteady,unsteadies,unsteadying,unsteadied,unsteadied
unstep,unsteps,unstepping,unstepped,unstepped
unstick,unsticks,unsticking,unstuck,unstuck
unstring,unstrings,unstringing,unstrung,unstrung
unswear,unswears,unswearing,unsworn,unswore
unteach,unteaches,unteaching,untaught,untaught
unthink,unthinks,unthinking,unthought,unthought
untread,untreads,untreading,untrodden,untrod
unwind,unwinds,unwinding,unwound,unwound
unwrap,unwraps,unwrapping,unwrapped,unwrapped
upbuild,upbuilds,upbuilding,upbuilt,upbuilt
upcast,upcasts,upcasting,upcast,upcast
upheave,upheaves,upheaving,upheaved,upheaved
uphold,upholds,upholding,upheld,upheld
uppercut,uppercuts,uppercutting,uppercut,uppercut
uprise,uprises,uprising,uprisen,uprose
upset,upsets,upsetting,upset,upset
upspring,upsprings,upspringing,upsprung,upsprang
upsweep,upsweeps,upsweeping,upswept,upswept
upswell,upswells,upswelling,upswollen,upswelled
upswing,upswings,upswinging,upswung,upswung
verbify,verbifies,verbifying,verbified,verbified
victual,victuals,victualing,victualling,victualed,victualled,victualed,victualled
vitriol,vitriols,vitrioling,vitriolling,vitrioled,vitriolled,vitrioled,vitriolled
vivify,vivifies,vivifying,vivified,vivified
wad,wads,wadding,wadded,wadded
waddy,waddies,waddying,waddied,waddied
wadset,wadsets,wadsetting,wadsetted,wadsetted
wake,wakes,waking,waked,woken,waked,woke
wan,wans,wanning,wanned,wanned
war,wars,warring,warred,warred
water-ski,water-skis,water-skiing,water-skied,water-skied
waylay,waylays,waylaying,waylaid,waylaid
wear,wears,wearing,worn,wore
weave,weaves,weaving,woven,weaved,wove
weep,weeps,weeping,wept,wept
wet,wets,wetting,wet,wetted,wet,wetted
whap,whaps,whapping,whapped,whapped
whir,whirs,whirring,whirred,whirred
whistle-stop,whistle-stops,whistle-stopping,whistle-stopped,whistle-stopped
whop,whops,whopping,whopped,whopped
wigwag,wigwags,wigwagging,wigwagged,wigwagged
will,would
win,wins,winning,won,won
wind,winds,winding,wound,wound
window-shop,window-shops,window-shopping,window-shopped,window-shopped
winterfeed,winterfeeds,winterfeeding,winterfed,winterfed
wiredraw,wiredraws,wiredrawing,wiredrawn,wiredrew
withdraw,withdraws,withdrawing,withdrawn,withdrew
withhold,withholds,withholding,withheld,withheld
withstand,withstands,withstanding,withstood,withstood
worry,worries,worrying,worried,worried
worship,worships,worshipping,worshipped,worshipped
wreak,wreaks,wreaking,wreaked,wrought,wreaked,wrought
wring,wrings,wringing,wrung,wrung
write,writes,writing,written,wrote
wry,wries,wrying,wried,wried
yak,yaks,yakking,yakked,yakked
yodel,yodels,yodeling,yodelling,yodeled,yodelled,yodeled,yodelled
zap,zaps,zapping,zapped,zapped
need,needed,needing,needs
invoke,invokes,invoked,invoked,invoking
involve,involves,involved,involving
isolate,isolates,isolated,isolating
act,acts,acted,acting
add,adds,adding,added
concern,concerned,concerns,concerning
exceed,exceeding,exceeded,exceeded
play,plays,played,playing
plate,plates,plated,plating
place,places,placing,placed
rearranges,rearranged,rearranging,rearrange
rest,resting,rests,rested
span,spans,spanned,spanning
stimulate,stimulated,stimulates,stimulating
activate,activates,activated,activating
believe,believes,believed,believing
belong,belongs,belonged,belonging
induce,induces,induced,inducing,induced.
infer,inferred,inferring,infers
influence,influences,influenced,influencing
interrupt,interrupts,interrupted,interrupting
introduce,introduces,introduced,introducing
wash,washs,washed,washing
mimic,mimics,mimiced,mimicing
be,being,is,are,was,were,been
occur,occurs,occured,occuring

只要不規則變化不是整個字都改變(比如 be、is、are),只要修改規則檔即可增進辨識率。

參考

2006年3月9日 星期四

Regular Expression 簡介

何謂 Regular Expression?

Regular expression (後文簡稱 RE)常見用來在某段文字中搜尋需要的字串。而 RE 的作法就是藉由“樣版(pattern)”來做比對。

RE 是一種由字元組成的樣式,用來比對資料,看看究竟符合或不符合這個樣式,然後可做進一步的處理。比如說:電子郵件位址的樣式,可寫成: .+\@.+。

RE 也可以稱為是樣式(Pattern),本身自成一種小型的程式語言。

例子

熟悉以前 DOS 作業系統的人都知道,‘*’‘?’字元在顯示目錄的命令中分別用來代表零或多個任意字元,以及單一一個任意字元(一定要有一個)

所以當我們使用像是“text?.*”的樣版時,下面列出的檔案都匹配該樣版:

  • textf.txt
  • text1.asp
  • text9.html

而下列的檔案名稱則不符合:

  • text.txt
  • text.asp
  • text.html

上面的例子展現了 RE 的運作模式。

為何要使用 RE

常見的 RE 應用範圍包括了:

  • 將某份 HTML 檔案中的某些特定的標籤移除。
  • 檢查電子郵件的位址是否合法。

基本上我們可以對字串進行下列的 RE 操作:

  • 驗證某個樣版:在一串字串中搜尋,檢查是否該樣版符合某部分子字串;回傳 true 或 false。
  • 從字串中取出子字串:在字串中搜尋某個字串,並將它取出。
  • 取代某個子字串:在字串中搜尋滿足範本的字串,並將它以其它字串取代之。

哪些地方在應用 RE

在文件處理方面,RE 經常可以發揮強大的功能。只要談到 RE,大家第一個聯想到的多半是 Perl 這個語言。RE 為 Perl 語言的基礎,因此其內建就支援 RE。其它的程式語言也可以藉由使用外部函式庫來支援使用 RE:

  • VBScript(5.x 以上):可藉由 RegExp 物件來使用 RE。
  • JScript(Version 5.x 以上):也是藉由 RegExp 物件來使用 RE。
  • C++ 經由 Regex++ 函式庫和 PCRE(Perl Compatible Regular Expression)函式庫來支援。
  • Java 內建支援 RE。
  • Microsoft .NET framework 內建支援 RE(經由使用 System.Text.RegularExpression 命名空間)。
  • PHP 內建 Perl 相容的函式,或是使用 POSIX 延伸的 RE 函式。

本文的程式碼以 Perl 語言為基準,至於其它語言因為它們彼此設計上的不同,語法稍有差異,但是大多大同小異。

在 Perl 中使用 RE

這裡我們簡單的說明要如何在 Perl 中使用 RE。

依樣版搜尋字串

expression =~ m/pattern/[switches]

在字串表示式中搜尋符合‘pattern’的子字串出現位置,並回傳該子字串(分別儲存於變數 $1}、$2$3...中)。其中的“m”代表“match”

例子

$test = "this is just one test";
$test =~ m/(o.e)/;

會回傳“one”於變數 $1 中。

替換字串

expression =~ s/pattern/new text/[switches]

在 expression 字串中搜尋符合 pattern 的子字串,並以 new text 替換找尋到的子字萬,其中的 s 代表 substitute。

例子

$test = "this is just one test";
$test =~ s/one/my/

將會以 my 替換 one,因此會將 this is just my test 字串存放於 $test 變數中。

Regular Expression 基本語法

類似於 C++ 中的跳脫字元,RE 的 meta character 必須以 \ 加以跳脫,比如若是要指定中括弧([),我們必須以 \[ 表示(這裡提到的跟你使用的程式語言有關;這裡是針對 Perl 來說)。

重要的 Meta Character 列表

Character描述
\標示下一個字元為一個特殊的字元(special character)、字母(literal)、backreference 或是 octal escape。比如,‘n’相當於去比對字元“n”。‘\n’則代表比對換行字元,‘ ’會配對到“\”等等。
.除了換行字元(\n)外,比對所有字元。若是要包含換行字元
,則使用下面這個樣式:[.\n]

Character 種類(Class)

一個字元種類(character class)是由一個或多的字元所組成的群組,這些群組內的字元被以包含於 [...] 來表示。比如說,“B[iu]rma”將會配對到 Birma 或是 Burma;也就是說,B 後面跟隨著 i 或是 u,後面再加上 rma。

換言之,字元種類代表:配對任何在該種類中的單一字元(match any single character of that class)。

RE 中也存在一些相反的字元種類:negotiated character class;其代表,配對任何一種不存在於該種類中的單一字元。比如說‘[^1-6]’將會比對任意字元,除了數字 1 到 6。

數量詞(Quantifier)

假如我們無法確定到底會有多少個字元,我們可以使用數量詞來指明某個字元可以出現的次數;我們可以使用像“Hel+o”,來代表 He 後面接著一或多個 l,後面再加上一個 o。

字元描述
*出現零次或多次以上;比如‘zo*’會配對到 z 或 zoo;* 相等於 ‘{0,}’。
+出現一次或多次;比如‘zo+’配對到‘zo’和 zoo,但是不包括 z;+ 相等於‘{1,}’。
?出現零次或一次。比如‘do(es)?’配對在 do 或 does 中的 do;?; 相當於‘{0,1}’。
{n}n 為非負整,代表確實的配對次數;比如‘o{2}’不會配對到位於 Bob 中的 o,而會配對到位於 foo 中的兩個 o。
{n,}n 為非負整,至少配對到 n 次;比如‘o{2,}’不會配對到位於 Bob 中的 o,但是會配對到 fooooooood 中所有的 o。‘o{1,}’相當於‘o+’;‘o{0,}’相當於‘o*’。
{n,m}m 和 n 皆為非負整數,其中 n 要小於等於 m;配對至少 n 次,至多 m 次。比如‘o{1,3}’配對到 fooooood 中的前面三個 o;‘o{0,1}’相當於‘o?’。要注意的是,在逗號和數字之間,請不要出現任何的空白。

Greedy

要注意到的一件事是,‘*’和‘+’是 greedy;它們會盡量去配對,配對出越多的會優先選取。比如說:

$test = "hello out there, how are you";
$test =~ m/h.*o/

表示:找出以 h 開頭,後面跟著多個任意的字元,最後以 o 結束。你也許會認為它會配對到“hello”,但是事實上,它配對到的是“hello out there, how are yo”,因為 RE 的組態是 greedy,所以它會搜尋直到最後一個“o”,而,這個例子中,就是在 you 中“o”。

你可以在表示式加上一個“?”,明確的指示要使用“ungreedy”方法。下面是一個例子:

$test = "hello out there, how are you";
$test =~ m/h.*?o/

上面的例子會尋找到“hello”;因為這個樣版的意義是去尋找一個“h”,後面接著多個任意字元,直到遇到第一次出現的“o”。

錨點(Anchor)

行起頭和行結尾

要檢查某一行的起始或結尾(或是字串),你可以使用 ^$ 這兩個 meta character。比如說,“^thing”,會配對到某個以“thing”起始的行。而“thing$”則會配對到某個以 “thing”結尾的行。

字邊界(Word Boundary)

\b’和‘\B’分別用來測試字邊界,以及非字邊界。下面這個例子:

$test =~ m/out/

對於“speak out loud”這個句子而言,會配對到“out”,但是也會配對到在“please don't shout at me”句子中的 out。若是要避免這種情況出現,你可以在樣式之前加上一個字邊界的錨點:

$test =~ m/\bout/

這樣,這個樣式只會尋找到以字邊界起始的“out”,而不包含在某個字中的“out”。

置換(alternation)和群組(grouping)

置換允許使用‘|’字元來在兩個或多個可替換的選擇中做選擇。在圓括弧中使用“(...|...|...)”,其允許你群組多個置換。

圓括弧本身用來抓取某個子字串,以便在其後對其做處理,並將它們儲存於 Perl 內建的 $1$2、... 及 $9 變數。

下面是一個例子:

$test = "I like apples a lot";
$test =~ m/like (apples|pines|bananas)/

將會配對成功,因為“apples”是三個置換人選中的其中之一,因此,會尋找到“like apples”。另外,圓括弧也會抓取到“apples”,並將它儲存於 $1 變數中,作為一個後參考(backreference)。

後參考(backreference)、往前看(lookahead-condition)和往後看(lookbehind-condition)

後參考

RE 一個重要的特性就是,它可以儲存之前配對到的子字串於某個變數中,以便之後處理。這是藉由在圓括弧中放置子字串來達到。這些抓取到的字串會被儲存於 Perl 的內建變數 $1 $2、... $9。

假如你不需要抓取某個子字串,但是需要用到圓括弧來群組字串,你可以使用“?:”來避免抓取。

例子:

$test = "Today is monday the 18th.";
$test =~ m/([0-9]+)th/

會將“18”儲存於 $1 變數中,而

$test = "Today is monday the 18th.";
$test =~ m/[0-9]+th/

$1 將不會儲存任何東西,因為並未使用圓括弧。

$test = "Today is monday the 18th.";
$test =~ m/(?:[0-9]+)th/

也不會儲存任何東西在 $1 變數中,因為在圓括弧中,有使用“?:”。另一個例子可以使用在置換中:

$test = "Today is monday the 18th.";
$test =~ s/ the ([0-9]+)th/, and the day is $1/

儲存於 $test 變數中的會是“Today is monday, and the day is 18.”。

你也可以藉由使用 \1\2、...\9 在尋找(query)中使用後參考(backreference),參考到之前尋找到的子字串。比如說,下面的例子會移除掉重複的字:

$test = "the house is is big";
$test =~ s/\b(\S+)\b(\s+\1\b)+/$1/

會在 $test 變數中儲存“the house is big”。

往前看和往後看狀態

有時候,我們需要下面幾個例子的配對:「配對它,但是只有在它不是處在另一個東西之前」或是「配對它,但是只有在它並非跟隨在某個東西之後」。若是只有考慮單一一個字元,你可以使用 negotiated character 類別:[^...]。

但是當它有多個字元時,你需要使用所謂的往前看狀態或是往後看狀態。總共有四種可能的類型:

  • Positive lookahead-condition '(?=re)' 只配對後面跟隨著 re RE。
  • Negative lookahead-condition '(?!re)' 只配對後面不跟隨著 re RE。
  • Positive lookbehind-condition '(?<=re)' 只配對前面跟隨著 re RE。
  • Negative lookbehind-condition '(?re RE。

範例:

$test = "HTML is a document description-language and not a programming-language";
$test =~ m/(?<=description-)language/ 

會配對到第一個“language”(description-language),因為前面跟隨著的是“description-”,所以

$test = "HTML is a document description-language and not a programming-language";
$test =~ m/(? 

會配對到第二個“language”(description-language),因為其並未跟隨在“description”。

更多例子

下面列出更多真實應用的例子。

置換前兩個字:

s/(\S+)(\s+)(\S+)/$3$2$1/

尋找 name=value 對:

m/(\w+)\s*=\s*(.*?)\s*$/

現在 name 儲存於 $1 中,而 value 則存於 $2

讀取 YYYY-MM-DD 格式的日期資料:

m/(\d{4})-(\d\d)-(\d\d)/

$1 中儲存的是 YYYY,在 $2中儲存的是 MM,DD 則存放於 $3

移除檔名前面的路徑:

s/^.*\///

總結

要注意的是,要處理相同的一件事,RE 可以用多種方式來呈現範本,有的表示法執行的速度可能很快,有的可能可讀性較高。

參考