diff --git a/cleansio/speech/timestamp.py b/cleansio/speech/timestamp.py index be600b2..dcdd8f0 100644 --- a/cleansio/speech/timestamp.py +++ b/cleansio/speech/timestamp.py @@ -1,6 +1,6 @@ """ Locates where words are located in an audio chunk """ -from utils import gcs_time_to_ms +from utils import gcs_time_to_ms, num_syllables class Timestamp(): """ Words are located by either assessing silence or by estimatingself. @@ -20,7 +20,8 @@ def __compute_timestamps(self): """ Goes through each word in the chunk and computes the timestamps """ if not self.lyrics.results: return None - return self.__parse_timestamps() + timestamps = self.__parse_timestamps() + return self.__improve_timestamps(timestamps) def __parse_timestamps(self): """ Parses GCS's output and returns [{word:str, start:ms, end:ms},]. @@ -33,3 +34,44 @@ def __parse_timestamps(self): 'end': gcs_time_to_ms(word_dict.end_time) }) return timestamps + + def __improve_timestamps(self, timestamps): + """ Adjusts the GCS's timestamps to be more accurate. O(n) """ + num_stamps = len(timestamps) + for i in range(num_stamps): + accuracy = self.__timestamp_accuracy(timestamps[i]) + # Too long, shorten one end + if accuracy == 1 and i > 1: + timestamps[i] = self.__shorten_timestamp( + timestamps[i], timestamps[i - 1]) + # Too short, lengthen one end + elif accuracy == -1 and i < num_stamps - 1: + timestamps[i] = self.__lengthen_timestamp( + timestamps[i], timestamps[i + 1]) + return timestamps + + def __shorten_timestamp(self, timestamp, past): + """ Shorten the length of a timestamp """ + past_accuracy = self.__timestamp_accuracy(past) + # Trim more from the beginning if past is short + timestamp['start'] += 200 if past_accuracy == -1 else 100 + return timestamp + + def __lengthen_timestamp(self, timestamp, future): + """ Lengthen the length of a timestamp """ + future_accuracy = self.__timestamp_accuracy(future) + # Add more to the end if future is long + timestamp['end'] += 200 if future_accuracy == 1 else 100 + return timestamp + + @classmethod + def __timestamp_accuracy(cls, timestamp): + """ -1: Too short, 0: Accurate, 1: Too long """ + syllables = num_syllables(timestamp['word']) + # On average a human says 1 syllable every 200 ms + expected_syll = (timestamp['end'] - timestamp['start']) / 200 + if expected_syll - 2 > syllables: # Too long + return 1 + elif expected_syll + 2 < syllables: # Too short + return -1 + return 0 diff --git a/cleansio/utils/__init__.py b/cleansio/utils/__init__.py index 054a4ee..b88c035 100644 --- a/cleansio/utils/__init__.py +++ b/cleansio/utils/__init__.py @@ -4,4 +4,5 @@ from .cli import setup_cli_args from .env import create_env_var from .files import create_temp_dir, file_name_no_ext +from .language import num_syllables from .numbers import gcs_time_to_ms, is_number, leading_zero diff --git a/cleansio/utils/language.py b/cleansio/utils/language.py new file mode 100644 index 0000000..8d4a349 --- /dev/null +++ b/cleansio/utils/language.py @@ -0,0 +1,8 @@ +""" Utillity functions for language related work """ + +import re + +def num_syllables(word): + """ Counts the number of syllables in a word """ + # https://codegolf.stackexchange.com/a/47325 + return len(re.findall(r'[aiouy]+e*|e(?!d$|ly).|[td]ed|le$', word)) diff --git a/tests/data/1-syllable-words.txt b/tests/data/1-syllable-words.txt new file mode 100755 index 0000000..2268fa8 --- /dev/null +++ b/tests/data/1-syllable-words.txt @@ -0,0 +1,2717 @@ +the +of +and +to +in +that +was +his +he +it +irs +ore +roy +inn +yer +with +is +for +as +had +you +not +be +her +on +at +by +which +have +or +from +this +him +but +all +she +they +were +my +are +me +one +their +so +an +said +them +we +who +would +been +will +no +when +there +if +more +out +up +do +your +what +has +man +could +than +our +some +time +may +its +now +like +then +can +should +made +did +us +such +great +must +two +these +see +know +much +down +first +good +men +own +most +old +shall +day +where +those +came +come +way +work +life +go +make +well +through +long +say +might +how +am +too +def +back +here +think +went +same +last +thought +take +found +hand +eyes +still +place +while +just +young +yet +though +things +get +give +god +years +off +face +right +once +left +part +saw +house +world +head +three +took +new +love +put +night +each +king +tell +mind +heart +few +thing +whom +far +seemed +looked +called +whole +de +set +both +got +find +done +heard +look +name +days +told +let +lord +asked +seen +home +knew +side +course +hands +words +soon +full +end +gave +room +small +thou +want +light +quite +brought +nor +word +whose +door +best +turned +does +use +felt +since +used +voice +white +works +less +next +poor +death +stood +form +till +thy +large +kind +year +friend +half +round +true +keep +sent +wife +means +passed +feet +near +state +son +thus +hope +case +dear +thee +says +high +read +fact +gone +girl +known +hear +times +least +sure +land +leave +air +law +help +lay +point +child +four +wish +fire +cried +speak +hour +friends +held +free +war +er +call +why +john +dead +earth +boy +lost +forth +soul +feel +care +truth +ground +rest +mean +fell +kept +short +town +need +cause +met +five +strong +french +live +sea +fear +hard +terms +doubt +ask +arms +turn +sense +seems +black +bring +close +dark +hold +sort +sight +ten +show +fine +ye +book +talk +mark +bed +age +else +force +art +spoke +ought +line +eye +ety +sun +reached +past +hours +strange +deep +change +miles +act +meet +paid +seem +blood +rose +south +cold +view +sound +none +clear +road +late +stand +la +mine +laws +comes +bad +cut +six +peace +low +north +fall +fair +hair +laid +pass +led +run +horse +west +pay +red +hath +note +gold +makes +play +tried +front +big +lived +wind +church +strength +length +placed +glad +bear +ran +faith +charge +lips +arm +send +foot +wild +die +save +trees +green +smile +books +wrong +sleep +drew +walked +chief +chance +deal +loved +knows +try +sweet +plain +wrote +mouth +rich +thoughts +months +joy +states +ship +filled +write +boys +parts +please +march +tears +caught +stay +struck +blue +school +raised +food +youth +reach +moved +walk +stopped +laughed +week +hall +born +court +grew +showed +third +worth +tree +fight +wall +tone +mere +month +street +goes +fresh +duke +bound +east +wood +stone +bright +boat +meant +chair +due +tom +date +lives +lines +field +wished +wait +piece +ex +formed +hill +cry +cost +girls +broke +sit +news +top +scene +step +race +per +learn +bit +speech +lie +cast +eat +floor +ill +ways +walls +watch +pleased +leaves +hot +killed +fast +brown +pain +spring +takes +drawn +steps +soft +straight +trust +laugh +eight +closed +gives +dress +sake +breath +wise +grave +fixed +spot +troops +rise +break +camp +sky +touch +shore +named +looks +plan +spent +pale +shot +lead +move +names +stop +et +threw +worse +built +glass +board +vain +safe +loss +class +forms +warm +drink +ones +ears +start +smiled +spite +shown +james +hart +hat +dog +main +pride +crowd +train +path +greek +fit +lot +proved +rule +sword +seat +game +health +grace +dream +rock +jack +shook +glance +heads +fee +share +spread +twelve +space +wine +taste +trade +forced +rate +clothes +sign +judge +watched +marked +bill +vast +prove +quick +yes +sought +neck +hearts +sides +dry +serve +pure +lose +thrown +page +weeks +search +sad +sin +lies +proud +price +ships +sick +shut +talked +bank +fate +dropped +hills +seek +stream +ear +bread +aid +choose +rights +tax +sons +cross +thick +points +woods +facts +dare +grow +hung +rain +false +tall +gate +streets +blow +coast +file +birds +song +wealth +failed +grass +touched +draw +stage +june +fish +tongue +served +breast +snow +claim +hast +sharp +prince +group +played +yours +add +pray +taught +tired +kill +weight +mass +gray +brave +thin +check +weak +frank +guess +heat +bent +seized +guard +box +gods +moon +slight +style +saved +crossed +pounds +paul +worked +grown +midst +liked +bore +list +calm +nice +joined +kings +twice +throw +ceased +priest +drive +fault +beat +fool +hurt +wants +height +size +edge +task +nine +burst +dressed +hopes +noise +rode +tells +minds +flesh +grand +legs +post +rank +storm +wore +loud +thank +rules +bird +coat +shape +birth +smoke +stands +teeth +shame +bay +brain +soil +ring +phrase +acts +square +pair +won +fruit +mad +tea +rocks +slaves +slow +grief +prayer +stars +buy +ride +fields +drove +sum +stones +fees +catch +knees +gained +slave +loose +text +worst +sold +don +hoped +fond +firm +proof +pressed +join +crime +dust +lands +doors +sing +nose +rooms +clean +fail +choice +huge +needs +wear +blind +rough +shows +fly +praise +smith +gain +notes +bought +souls +based +car +dick +bare +fought +hate +lake +faint +thinks +drop +brief +goods +tale +skin +roof +grey +crown +throne +ease +mile +dull +clouds +term +cup +strike +pulled +flight +yards +whilst +bow +suit +plans +lest +paused +meat +milk +dogs +plants +rare +raise +obs +cool +bridge +stock +type +signs +pope +queen +teach +count +dance +fled +kissed +guns +fill +guide +lad +harm +views +ends +shop +stairs +gay +beg +kinds +fat +sand +worn +flat +gift +skill +calls +en +wound +whence +rushed +bold +helped +sell +self +throat +dreams +speed +growth +slept +thine +sounds +swift +wings +stepped +base +win +maid +site +sail +feared +store +shalt +cook +pause +band +hence +kiss +plant +ice +ball +stick +fierce +rage +gun +shade +hide +range +host +wet +cloud +ed +waste +spend +source +deck +sees +aunt +reign +hers +doth +thanks +banks +cap +waves +glanced +pushed +press +fleet +bowed +staff +stretched +gaze +meal +blame +guests +job +loves +risk +ad +wit +fame +lack +dawn +gets +lights +sheep +spare +farm +corn +jane +key +towns +flame +priests +cloth +gazed +fourth +bell +urged +ascii +begged +hole +borne +files +sigh +thrust +frame +disk +haste +knight +charm +rolled +email +flung +verse +turns +branch +rear +stared +boats +keen +bones +luck +scheme +oil +thence +dim +pipe +print +smooth +build +eggs +burned +oh +cries +noon +cease +tent +beast +gates +stern +knife +dread +jim +silk +links +cent +finds +bade +lords +hell +grant +tribes +hit +mixed +prayers +treat +flew +speaks +slipped +ours +yield +schools +rush +falls +stayed +sins +anne +pen +tide +vol +leaned +tail +fears +nights +tied +cat +port +male +mode +poured +sank +brings +trace +chose +tribe +costs +sang +sam +sorts +rude +winds +scenes +shake +claims +lamp +sex +trail +shone +nurse +match +wrath +gifts +chain +debt +shoes +mood +crew +yard +vague +odd +wives +cared +jews +joe +dutch +ate +steel +test +shed +folks +star +deeds +oath +guest +bar +row +bless +stir +fix +deed +sighed +vote +leg +bid +scarce +rev +hang +shock +strain +drank +aim +bag +beasts +track +rid +holds +swear +fun +apt +queer +seed +runs +stuff +sole +roads +plate +pains +dwell +grounds +taxes +tones +wave +folk +marched +writes +sailed +pull +hid +rope +vi +arts +feast +burn +card +flow +scale +marks +ben +wrought +songs +torn +hunt +web +chest +depth +clerk +drunk +pour +lift +limbs +plays +dragged +flag +boots +bears +signed +walks +feed +roll +wilt +inch +lee +owe +trip +shoot +owns +beard +stirred +tear +dan +bob +depths +breeze +jean +smell +locked +courts +pick +desk +gross +lane +root +mud +cleared +feels +fruits +bride +rang +ranks +grasp +veil +gloom +prize +greeks +foe +shared +id +coach +knocked +keeps +leads +sale +wheel +burnt +flash +fed +curse +zeal +groups +fort +club +cure +stout +missed +flood +seas +grain +steep +route +non +wire +crept +greece +knee +scorn +grows +clock +roots +jumped +sore +slip +fires +wept +stroke +cave +wars +stiff +score +ruth +blows +plains +flashed +rent +prey +owed +sheet +gas +claimed +glow +leaf +jones +pound +pierre +sunk +beach +flour +roar +hut +seats +bark +wake +prayed +jest +washed +nerves +swung +wing +dwelt +trick +joke +mist +shell +nest +fetch +tomb +coarse +heap +homes +hint +knights +dreamed +craft +pink +heels +streams +flames +sport +beds +shout +bath +chap +roused +climbed +mail +wrapped +paint +mild +nay +lit +quit +plot +dish +cares +straw +net +wounds +warmth +rays +shores +flushed +wont +steam +ned +trained +warned +shield +chairs +searched +mate +ghost +blew +wash +clay +trunk +dried +chiefs +coal +vice +deemed +pile +spell +bone +grim +leaped +pole +sink +ward +cheer +siege +sets +load +brass +fifth +faced +cheap +saints +owned +seize +springs +fence +leagues +glimpse +doubts +fro +string +strict +likes +corps +judged +wheels +pack +drops +deer +bush +plunged +joint +spake +jan +weep +bench +ralph +heir +oak +faults +charms +purse +chase +gown +lock +foul +types +breathed +bells +shine +dashed +dates +theirs +adv +clasped +spared +crushed +waved +slope +learnt +stores +guessed +heed +woe +den +dine +ann +sphere +guilt +steal +lip +dost +wheat +smiles +park +na +stretch +lean +knock +tie +cell +void +egg +crimes +breathe +sits +thanked +seeds +foes +longed +lend +lent +eh +veins +seal +mount +harsh +kate +lunch +pine +shells +flies +push +tight +sue +waist +tore +lieu +thread +dumb +blank +del +danced +dealt +cents +whip +checked +shirt +sweep +sketch +thief +ut +guards +ha +mob +thirst +asks +viewed +gleam +palm +quoth +fur +holes +spear +clung +neat +lap +damp +ridge +spoil +swords +chains +tin +couch +bills +sails +dined +cow +mill +map +porch +ford +clothed +jew +bands +nigh +prose +codes +saint +awe +strife +beer +wretch +fain +brains +flock +niece +rings +smart +boxes +aught +creek +lo +brush +cream +jump +pitch +cliff +crowned +sites +dies +pot +rice +planned +guy +hired +fools +leap +games +bet +bull +raw +log +skies +scotch +robbed +cart +robe +tents +herd +pan +blown +paths +backs +heights +gasped +breadth +tune +traced +pseud +squire +bars +tossed +block +lots +bloom +brute +fist +dense +adds +rows +sworn +horn +brook +fund +lodge +ruled +pit +sheer +fare +packed +el +grasped +tend +carved +bonds +corpse +realm +debts +shops +coin +clad +lace +fred +trap +spots +proofs +wits +cake +lamps +sir +tongues +praised +rob +wales +knelt +stake +tread +mines +brick +arch +sprung +shy +prime +fog +bits +moves +warn +vile +doom +scent +bliss +stove +joys +flowed +brows +swell +wreck +bowl +swamp +nerve +stare +pledge +earn +gang +boiled +shouts +theme +pool +lads +didst +workmen +monks +sends +preach +woke +weighed +wool +orleans +strikes +sticks +drag +crop +wolf +sheets +bond +horns +breaks +balls +rod +blaze +mouths +max +juan +goal +cash +lawn +texts +tastes +blush +ein +shew +globe +throng +cheese +bite +breach +cars +dusk +truths +plague +boil +shocked +hanged +hats +mirth +bows +pierced +tricks +rubbed +fright +rail +crops +proves +ripe +reigned +sixth +mask +sire +keys +damned +vexed +bind +cliffs +tools +git +bulk +bunch +cooked +hay +gale +preached +hears +vow +quaint +soup +beef +rests +slay +sealed +posts +blade +spy +shades +robes +maine +chanced +locks +votes +bred +league +limb +crack +naught +slew +dug +hearth +snatched +shaft +linked +jove +stem +dec +cows +schemes +urge +shrill +dean +flush +code +split +snake +ass +draws +creed +luke +strove +cups +wax +spoiled +earned +prompt +bronze +stooped +dew +monk +thrill +hue +funds +dash +strained +swim +strip +team +tracks +talks +plane +sums +deaf +grip +juice +blast +nile +troop +crowds +axe +holmes +tops +boards +cells +reads +sway +screen +dirt +breed +shapes +shrewd +nov +halt +stamp +whites +drift +roared +ray +ink +oft +draught +kin +worlds +frost +glare +termed +yea +quest +crest +lakes +swing +freed +lined +shrugged +checks +pub +grove +hire +fox +grieved +stamped +wiped +oars +scared +lodged +hedge +storms +beam +tour +wells +earl +piled +boughs +ports +rhine +bud +hail +beams +pig +shaped +aug +stripped +plead +cord +flows +wrongs +lungs +serves +pint +pipes +pitched +tube +smote +burke +nails +wears +doomed +bee +mix +sweat +tenth +folds +roofs +mute +cage +esq +cured +jail +crowns +feb +scream +fits +cane +fold +thieves +tons +dave +moore +meets +stress +groan +suits +hosts +crash +quote +choked +hurled +sack +snapped +crush +canst +smoked +greet +strive +curve +flank +logs +lamb +reins +trunks +shrank +kent +maids +rates +bees +tramp +van +nought +yoke +threats +lays +pays +nod +patch +lance +thumb +wolves +sales +trains +skirts +tip +kick +dig +pet +skull +ness +threat +ghosts +asp +blocks +shrine +heel +throws +frown +plunge +moor +pin +mars +framed +jaws +gulf +rash +nick +nan +hon +pulse +flee +clause +growled +charmed +knot +rags +mock +clare +skirt +grin +hoarse +mills +lain +aimed +scope +blushed +crow +shawl +sings +coats +strode +hook +airs +spark +sleeve +tame +ditch +tract +plus +farms +ropes +hounds +rains +pond +wrist +li +tries +bags +reared +jaw +sect +drum +poles +verge +bin +stained +weigh +float +troy +shift +mould +hymn +ken +witch +backed +pomp +mess +bored +shrink +crude +eve +frail +hans +mule +bolt +lame +vein +lists +shoe +thrice +foam +keith +fraud +cats +blamed +jar +clerks +ark +moist +wid +sauce +writ +bruce +deem +rolls +doe +swiss +loan +beads +lust +ah +shares +saul +shelf +fan +kid +phase +turf +dame +clubs +creep +guides +vii +link +pluck +yon +moss +skilled +cum +med +tough +plea +lacked +mac +fork +stain +hints +drinks +whipped +matt +steed +width +rouse +vent +vines +flags +ranch +odds +aims +pie +pigs +choir +verb +stead +fling +dove +cracked +sexes +pledged +brushed +grieve +tim +flint +vault +worm +ay +eighth +knives +te +yacht +stray +tends +wan +welsh +swam +slid +cock +lump +wee +dome +cheered +curved +drives +alps +harp +peaks +rub +grapes +beans +nail +tact +toast +swelled +mouse +helm +slim +lime +spur +sown +hush +breasts +pat +strokes +sob +vine +pots +crust +sting +ho +ta +coasts +starve +scots +goat +sour +spoils +pa +ox +carl +blanche +spray +sports +ab +scales +calf +melt +grade +pang +brisk +stool +al +spies +yell +boot +ale +goose +truce +groves +cling +duck +weird +males +pairs +con +lapse +soap +eyed +doll +sez +nuts +wright +hides +co +walt +pearl +thrilled +gains +jokes +quod +clue +tooth +clasp +lets +wires +wheeled +aye +shriek +gap +rhyme +launched +vowed +caps +owl +suite +heaped +babe +rogue +hull +jeff +peak +khan +plucked +bids +clapped +zeus +mike +tray +mound +mast +twist +groom +solve +tempt +lid +fowl +threads +boss +piles +peer +cheers +wrung +gilt +strand +sly +boon +brink +hum +trod +trench +fore +dey +mend +meek +garb +hushed +brand +dipped +tool +dwarf +ak +paced +tense +drums +hen +baked +winged +trim +wrecked +ledge +roast +stocks +mourn +freight +wipe +shelves +traits +dire +gait +clutched +sneer +plump +cheat +blest +haunt +frock +gal +wed +plough +snakes +reef +draft +hound +toy +stair +cough +blazed +claude +burns +din +zone +ac +ninth +heal +karl +staid +stuffed +steer +ounce +drown +slide +sow +rides +spoon +pinch +ducks +rum +ni +bluff +dawned +chalk +fuss +dazed +hem +gorge +damn +theft +rats +ash +floods +ti +twelfth +prone +twins +stoop +raft +fade +soothe +pork +dot +loaf +isle +dip +unit +brig +chat +maps +trot +howl +ton +bricks +sane +wreath +cork +whale +hare +haze +ted +caste +leapt +grudge +tips +turk +rhythm +rat +knit +dis +esp +whig +wharf +stunned +drain +wage +tap +toe +wade +knave +twain +brood +plight +alms +wink +nous +rack +carts +lone +counts +scratch +screw +hood +glove +chaste +whirl +plank +mi +seals +knots +wail +kneel +peep +swarm +bust +arched +furs +dock +psalms +hawk +rein +bake +pierce +snatch +launch +worms +drug +gaunt +quart +soothed +sic +strait +cords +trout +paste +scrap +fiend +moan +trades +rounds +crawl +aft +role +dose +snap +tire +geese +locke +deals +core +durst +scratched +wert +wig +pump +reigns +reap +dam +fringe +feat +rue +toss +rung +scrape +pools +oar +bait +login +slice +meg +xi +drill +womb +surf +weed +tapped +gasp +glee +lied +pro +val +eats +snare +wines +flown +thorn +re +holt +peas +clan +dart +berth +tint +aisle +click +stump +spun +gear +wares +snug +chaps +prints +rug +ham +mice +pose +guise +noun +scout +spit +nun +wad +curves +sledge +butt +tank +pins +chart +twin +blunt +bleak +sub +drugs +ache +limp +deuce +thigh +scant +mien +cor +peers +chant +marsh +vase +ty +baths +coil +crisp +jerk +tout +stroll +jam +shoots +nets +dice +shrunk +swine +tints +rout +steve +rag +punch +craig +drained +stride +gum +las +lash +lore +scot +scrub +myth +flights +oats +cape +scare +waked +brake +kirk +bough +mat +shun +raid +puff +beak +rot +grate +lease +pier +stale +comb +shaw +rite +si +whim +peg +reed +streak +blocked +smashed +farce +germ +bathe +slate +gin +cleft +bart +lambs +tub +greed +herb +ole +forged +scourge +vera +spin +puffed +lids +muse +clump +flute +yore +jay +fray +po +beth +ape +span +snuff +drooped +ills +dye +bolts +lark +slips +seine +glide +sol +mane +tinge +brim +shrug +trait +bribe +soiled +vest +bass +squeeze +dreamt +parched +curb +scraps +fried +spade +scorned +pail +ma +spouse +valve +sup +ant +heath +bug +bat +mates +stalk +fret +buck +cocked +dad +chasm +blot +nook +jake +haul +hurts +splash +curl +brace +clothe +gem +wrap +ram +wins +awed +whit +stall +sham +gout +jobs +sate +ebb +cruise +cheque +perch +flask +ka +manned +wast +frog +yarn +smelt +leaps +smite +os +barge +sponge +cot +wand +grind +bang +growl +jug +sap +yale +scarf +aux +scar +sous +ca +clash +speck +birch +dough +clutch +trance +mon +meats +filth +ware +glen +quay +heave +film +wench +calves diff --git a/tests/data/2-syllable-words.txt b/tests/data/2-syllable-words.txt new file mode 100755 index 0000000..831478d --- /dev/null +++ b/tests/data/2-syllable-words.txt @@ -0,0 +1,3724 @@ +into +any +other +very +upon +about +only +little +before +over +after +never +himself +without +being +even +again +many +every +people +away +repaid +maketh +statesmen +seamen +wordforms +honour +honours +honoured +under +also +blockquote +yourselves +hypertext +against +ever +nothing +always +between +because +country +going +better +having +something +moment +father +among +woman +enough +mother +almost +cannot +water +given +taken +morning +myself +until +power +themselves +rather +began +present +others +money +within +matter +often +certain +herself +order +believe +public +hundred +children +alone +above +person +city +received +perhaps +indeed +english +open +body +itself +along +return +nature +answered +either +letter +women +number +therefore +during +business +whether +manner +second +reason +replied +behind +became +become +thousand +looking +coming +spirit +question +making +towards +human +evening +returned +able +lady +subject +answer +around +followed +party +ready +story +common +account +written +longer +across +brother +early +sometimes +saying +table +appeared +river +later +feeling +further +purpose +happy +added +taking +beyond +neither +forward +entered +suppose +daughter +real +nearly +knowledge +toward +copy +husband +living +effect +pretty +service +below +except +doing +army +future +opened +pleasure +although +wanted +desire +master +office +receive +unto +paper +letters +greater +yourself +fellow +window +ago +beauty +remained +latter +duty +distance +silence +object +trouble +persons +happened +minutes +hardly +action +visit +thinking +follow +standing +presence +heavy +afraid +single +broken +unless +carry +exclaimed +seeing +appear +outside +secret +evil +slowly +horses +places +instead +sister +battle +married +former +learned +merely +system +twenty +dinner +quiet +giving +language +danger +wonder +figure +getting +ancient +respect +simple +leaving +remain +result +heaven +started +command +regard +beside +silent +perfect +writing +covered +quickly +notice +noble +somewhat +sudden +value +support +waiting +village +reading +agree +observed +scarcely +greatest +success +british +speaking +trying +proper +music +allowed +seven +private +marriage +garden +begin +sitting +offered +flowers +produced +summer +provide +study +picture +declared +effort +prepared +escape +attempt +supposed +author +soldiers +houses +beneath +talking +turning +matters +likely +corner +trademark +justice +simply +produce +appears +forget +passage +ourselves +passing +required +efforts +ladies +pleasant +modern +fifty +island +meeting +nation +reply +copies +equal +fortune +domain +promise +orders +degree +middle +winter +allow +conduct +running +surprise +minute +roman +cases +higher +spoken +affairs +instance +doctor +offer +complete +access +lower +darkness +passion +questions +lying +keeping +silver +mentioned +servant +moral +instant +meaning +ordered +obliged +enter +attack +statement +social +refund +sorry +courage +members +worthy +special +request +mighty +movement +expect +dollars +glory +engaged +peter +mountains +iron +greatly +using +feelings +native +promised +working +anxious +marry +captain +finished +extent +foreign +besides +method +fancy +prevent +legal +aside +powers +possessed +distant +progress +narrow +building +knowing +settled +holding +mountain +pieces +clearly +thirty +honest +judgment +accept +removed +forest +measure +species +highest +honor +obtained +bottom +fingers +agreed +events +fully +delight +amount +obtain +servants +shoulders +stranger +creature +nations +refused +surface +freely +holy +july +fashion +report +daily +shoulder +surprised +faces +royal +comfort +freedom +advance +gentle +surely +waited +secure +desired +portion +expressed +spirits +angry +growing +carriage +weather +papers +practice +robert +throughout +pity +expense +million +explained +leading +shadow +suffered +virtue +golden +famous +telling +alive +waters +divine +gathered +valley +finding +yellow +remains +pointed +windows +louis +willing +richard +season +remarked +science +tender +whispered +quarter +advanced +active +noticed +aware +uncle +august +sacred +kingdom +entire +unknown +habit +spanish +reader +published +direct +handsome +posted +approach +hearing +needed +increased +walking +wisdom +truly +numbers +wounded +sorrow +listened +palace +affair +contact +station +listen +becomes +watching +express +occurred +favour +subjects +follows +putting +lifted +suffer +smiling +farther +vessel +advice +empty +duties +countries +pocket +driven +sentence +lovely +happen +absence +breakfast +series +laughing +address +relief +owner +prepare +mother +machine +content +moving +wholly +busy +treated +burning +inside +message +resolved +calling +mention +title +forces +nearer +falling +bearing +mercy +larger +explain +contain +soldier +welcome +proposed +belief +informed +moments +constant +final +faithful +supper +drawing +dying +demand +fighting +upper +motion +forty +april +kindly +seated +amongst +current +sending +parties +objects +bitter +credit +chosen +printed +terror +features +control +fifteen +cruel +harry +splendid +sooner +process +concerned +deeply +colour +destroy +anger +results +increase +reasons +friendly +entrance +admit +supply +useful +remove +addressed +cover +double +dozen +level +release +ended +devil +ahead +degrees +chamber +mission +cities +mistake +conscience +buried +closely +partly +mistress +arose +playing +color +safety +asleep +centre +parents +escaped +careful +enjoy +brilliant +bringing +worship +highly +castle +stated +despair +attached +total +kindness +circle +extreme +figures +prison +assured +hidden +member +civil +apply +labor +fairly +comply +fellows +event +gently +conscious +wishes +voices +weary +couple +volume +details +older +custom +apart +awful +labour +asking +lover +showing +composed +rendered +pictures +singing +eager +precious +require +vision +granted +manners +cousin +trial +learning +approached +abroad +paying +writer +readers +dreadful +female +protect +destroyed +temper +plenty +avoid +hurried +favor +mental +brothers +solemn +causes +vessels +compelled +hotel +wicked +younger +earnest +pardon +seldom +record +branches +inquired +ruin +cattle +temple +license +consent +natives +laughter +contained +perceived +scattered +chiefly +witness +foolish +kitchen +treatment +patient +latin +immense +severe +excuse +triumph +joseph +pages +charming +softly +performed +likewise +frightened +remark +thousands +inclined +convinced +desert +effects +behold +observe +blessed +bosom +striking +creatures +shouted +guilty +setting +forgot +slightly +police +confess +murder +wondered +horror +local +doctrine +changes +possess +trembling +disease +mankind +habits +estate +humble +delay +shining +midnight +flower +hero +classes +belong +finger +market +troubled +picked +somewhere +household +baby +region +lately +uttered +exact +image +ages +murmured +refuse +enjoyed +belonged +ashamed +reward +nodded +status +poem +savage +arise +voyage +painted +attend +afford +donate +proceed +forehead +regret +plainly +lighted +angel +rapid +distinct +doubtless +error +utmost +methods +appeal +strongly +breaking +fatal +render +career +design +displayed +forgive +utter +patience +exist +alike +mounted +issue +measures +dared +reduced +weakness +furnished +china +flying +profit +movements +acted +disposed +chapter +helen +sugar +lonely +artist +quarters +substance +painful +ocean +leader +senses +inches +derived +managed +preserved +hurry +reaching +wretched +hanging +useless +solid +pursued +recent +travel +crying +cabin +compared +handed +smaller +frequent +alarm +nervous +aloud +stronger +loving +masters +writers +mortal +preserve +burden +aspect +millions +merry +clever +district +shadows +failure +amid +profits +agent +union +contempt +raising +secured +wooden +prefer +fever +daughters +warning +impulse +johnson +resumed +confirmed +deny +correct +perform +somehow +acquired +counsel +distress +notion +hundreds +firmly +actions +steady +remarks +empire +idle +online +permit +college +maintain +crowded +opposed +treaty +contents +rested +lees +occur +seeking +reports +begins +founded +instinct +cheerful +threatened +western +beings +pressure +shelter +revealed +riding +merit +sleeping +coffee +thereof +romans +requires +fathers +prospect +obey +northern +profound +hungry +sisters +assure +folly +teaching +venture +perceive +accounts +eating +declare +version +grateful +nearest +elsewhere +parted +owing +martin +cottage +leaning +settle +referred +francis +holder +involved +sunshine +council +princes +strangers +beheld +noted +slightest +widow +errors +attacked +maintained +restored +concealed +heavens +bottle +intense +quarrel +touching +inner +derive +hollow +contains +province +muttered +thither +oxford +lofty +endure +succeed +alice +hated +acting +landed +passions +lightly +disturbed +supreme +display +confined +poets +sounded +negro +fearful +standard +studied +buildings +commenced +deeper +repeat +driving +drinking +treasure +throwing +tower +defend +desires +depends +poems +section +staring +marble +awake +walter +shaking +butter +fury +moses +issued +hatred +pursuit +vanished +elder +signal +wanting +supplied +safely +describe +lesson +passes +county +beaten +presents +format +sixty +damage +commerce +startled +southern +outer +belongs +naked +rivers +concern +magic +campaign +hunting +whisper +largely +exists +teacher +lawyer +detail +shortly +caesar +leaders +blessing +princess +altar +tiny +sharply +purple +gather +gloomy +decide +victim +gazing +absurd +gesture +armies +manage +brethren +hastened +motive +pointing +verses +pronounced +exchange +remote +finish +denied +churches +rarely +ugly +harmless +mingled +training +badly +central +contrast +relieved +romance +structure +payment +pace +sources +inspired +angels +troubles +handle +fitted +refuge +cutting +resist +maiden +merchant +whereas +crossing +lively +virtues +conceived +thereby +eighteen +eaten +preferred +ruined +wherein +condemned +happens +billy +holland +beating +depend +judges +giant +arrive +autumn +absent +doubtful +suspect +weapons +limits +feeble +prophet +basis +corrupt +payments +returns +laying +purchase +rival +someone +defeat +demands +consists +studies +balance +forming +slender +silly +humour +masses +recall +discourse +regions +assist +novel +hither +tales +revenge +lucy +yonder +jealous +risen +marie +swiftly +portrait +create +summoned +suggest +induced +conflict +helpless +lincoln +germans +vengeance +gracious +include +respects +ventured +implied +stupid +wearing +conceal +pleasures +therein +assume +gardens +closer +thunder +graceful +childhood +saddle +supplies +weeping +mostly +agents +software +losing +attempts +receipt +dearest +finest +motives +fastened +confused +fancied +wedding +farmer +behalf +reckon +dirty +rolling +platform +offers +mischief +imposed +student +daring +convey +sincere +gravely +combined +gallant +charges +submit +virgin +farewell +hunger +trembled +customs +cotton +outward +impressed +longing +disgrace +colored +wages +papa +leisure +deadly +chin +adam +hostile +wandered +railway +betrayed +admired +ruins +eastern +roses +deceived +tables +starting +feature +counted +reserve +strangely +absorbed +propose +pleasing +attained +research +monarch +clothing +dollar +illness +calmly +obeyed +pressing +daylight +comment +metal +sixteen +dwelling +depart +peaceful +lion +alarmed +furnish +resting +accused +culture +writings +conquered +trusted +column +cunning +drama +proofread +yielded +conceive +lessons +candle +offence +mixture +model +defect +destined +fourteen +acid +namely +asia +neglect +data +weapon +confessed +repose +copied +user +income +regards +bishop +lightning +authors +compressed +powder +orange +painting +careless +doorway +volumes +vulgar +sunset +recalled +abode +planted +promptly +parish +basket +deserve +mirror +upward +sadly +adding +modest +advised +largest +restless +meantime +lovers +today +moonlight +intend +rocky +pious +garments +merchants +products +dispute +poison +maybe +rifle +parting +employ +prevailed +talent +rises +climate +unlike +arrange +fortunes +puzzled +aged +ashes +bushes +esteem +nonsense +stolen +earthly +restore +lasted +selfish +renewed +canoe +protest +races +chapel +upright +quoted +formal +students +greatness +reproach +altered +questioned +bestowed +pursue +gladly +linen +vital +hopeless +dangers +travelled +nephew +bloody +commands +stomach +improved +admire +sailors +abide +forests +records +statements +upstairs +varied +letting +comrades +descent +whither +envy +pretend +folded +curtain +healthy +obscure +summit +alas +center +colonel +contest +chances +alter +landing +statue +contract +saving +faded +arrest +intent +injured +smoking +inform +retained +nobles +embrace +closing +damaged +eldest +anguish +strictly +capture +inquire +ample +justly +answers +bedroom +purely +thyself +refer +madam +railroad +columns +discharge +rescue +limit +awoke +program +reserved +persuade +deprived +endless +heroes +lowest +withdrew +commons +loaded +amidst +titles +madness +assigned +declined +jewels +youthful +stately +fragments +rushing +product +sickness +uses +engine +ashore +leather +subtle +floating +worry +steamer +designed +roger +timber +talents +murdered +vivid +killing +laura +wasted +trifle +funny +pockets +insult +temples +robin +wishing +flowing +lawyers +murmur +stopping +welfare +fishing +perish +sober +infant +norman +humor +footsteps +marquis +twilight +arrows +retire +secrets +halted +govern +colors +tempted +frontier +dealing +decent +fiery +punished +rejoined +major +placing +prudence +border +fanny +exempt +anchor +purchased +neighbors +glowing +sunlight +wealthy +seeming +shouting +naval +doubted +painter +greeted +erect +glasses +meanwhile +shooting +wagon +crisis +polite +anna +header +clergy +array +corners +loudly +texas +searching +includes +boldly +seconds +despite +hoping +problems +landscape +scarlet +mainly +measured +loyal +boiling +suited +advise +sinking +stable +commit +sweetness +dismissed +affect +shaken +evils +peasant +conveyed +extend +riches +copper +sailor +response +victor +bending +minor +crimson +teachers +bargain +fatigue +dislike +witnessed +acres +normal +sofa +mothers +deserved +persian +driver +retain +daniel +channel +berlin +smallest +excess +disgust +speeches +herbert +convent +rightly +reform +treasures +designs +filling +fortnight +frightful +speaker +tribute +procure +frankly +relieve +unjust +project +threshold +merits +morrow +traces +induce +inward +pupils +fairy +conclude +lucky +session +torture +hearty +thoughtful +strongest +warrant +complaint +guarded +angle +widely +charlotte +ardent +victims +foremost +fountain +sustained +clara +lewis +rejoice +collar +hasty +organ +replace +districts +released +compare +relate +pistol +presume +velvet +stirring +missing +facing +peoples +disturb +sermon +exchanged +partner +lowered +estates +abuse +notions +cannon +thirteen +sailing +petty +widest +prudent +caution +awhile +cigar +lifting +tidings +liquid +staying +concept +download +meetings +practised +combat +subdued +blowing +extra +japan +portions +awkward +horrid +pulling +jury +attacks +monster +simon +frozen +survive +ellen +briefly +sublime +dropping +penny +adopt +replaced +formats +curtains +helping +insist +occurs +latest +apple +pupil +twisted +discuss +firing +background +subscribe +transcribe +descend +differ +avail +cursed +fulfilled +georgia +virus +embraced +faintly +childish +aboard +reflect +dreary +serving +engage +attain +collect +disclaims +borrowed +convert +outline +peasants +assault +deceive +doctrines +struggled +hiding +prices +procured +mourning +withdraw +polished +dishes +parent +contrived +akin +betray +disguise +neighbour +punish +worldly +muscles +elbow +trifling +decline +filename +artists +repair +eagle +barren +functions +guided +fiction +shillings +duly +governed +scripture +upwards +marshal +fiercely +costume +applause +remind +pillow +jersey +abbey +nowhere +marching +catching +arrow +fitting +essence +glancing +complained +staircase +accord +sally +tremble +exile +gospel +scholar +wonders +arab +likeness +harbour +jolly +ruler +crazy +madame +deepest +lordship +greeting +monstrous +barely +mansion +honey +ladder +ending +swallowed +sunny +decree +divide +dreaming +proclaimed +viewing +defense +oldest +bidding +elect +harder +winding +liquor +perished +eighty +licensed +coloured +consult +taylor +legend +shallow +dreaded +battles +compass +harvest +transfer +heathen +gilbert +bundle +rebel +rigid +tragic +review +melted +towers +cooking +oppressed +revolt +improve +describes +goddess +convince +westward +refined +unseen +saxon +warfare +select +manhood +dressing +rejoiced +challenge +forbid +thankful +enters +genus +newly +sorrows +pattern +reveal +endured +resolve +ringing +errand +righteous +oppose +joyous +doctors +organs +haunted +chorus +adorned +resort +preacher +casting +opens +prophets +warmly +satan +workers +lantern +excite +howard +horseback +farmers +wildly +carpet +sadness +circles +allied +ceiling +glances +diamonds +vacant +despise +appealed +turkey +neighbor +spreading +discharged +phrases +entry +hardy +thorough +fertile +captive +faster +grandeur +winning +solely +malice +echoed +lodging +whistle +floated +transferred +reckoned +downstairs +invite +sandy +escort +harbor +negroes +concerns +wander +assert +dismay +pushing +jimmy +haughty +navy +fortress +blessings +insects +selling +suppressed +acquire +dresses +coldly +candles +blazing +youngest +lecture +parlor +whereby +gordon +quitted +function +morals +pouring +bullet +prevail +wiser +preaching +prolonged +annoyed +splendour +upset +pencil +emerged +trousers +debate +dated +tumult +summons +comrade +lingered +stillness +partial +welcomed +proceeds +surgeon +borders +unite +owners +sweeping +saviour +graham +behaved +pleaded +lawful +tommy +seasons +withdrawn +reckless +gossip +seventh +journal +systems +token +abstract +machines +bestow +accent +symptoms +ragged +swinging +whereof +indies +novels +failing +santa +approve +miller +lodgings +traffic +kindred +steward +reverse +survey +amuse +stretching +forthwith +receives +scandal +donors +symbol +repaired +homage +defined +washing +pavement +wisely +precise +visions +maggie +rosy +feeding +allen +husbands +labours +reduce +distressed +clearing +scottish +vaguely +treason +hunter +chambers +yielding +liking +tyrant +slaughter +dismal +assent +concert +downward +canal +evenings +fancies +murray +finer +roaring +wherefore +sharing +delayed +waking +garment +wholesome +remorse +plato +morris +porter +esteemed +cherished +brandy +homer +acute +motor +janet +offspring +network +reaches +proudly +baggage +terrace +resigned +onward +tightly +sullen +brutal +diamond +endowed +strengthened +echo +restraint +trials +headed +softened +stages +professed +era +wider +eyebrows +afar +consist +displays +flashing +hunted +beauties +lazy +devils +compact +breathless +revived +counter +venus +despatched +climbing +attract +crystal +shower +wondrous +await +armour +massive +bottles +cellar +falsehood +pillars +edgar +martha +stealing +noisy +henceforth +laden +device +touches +senate +lasting +transport +coffin +johnny +enclosed +clinging +darkened +swallow +nancy +labors +indulge +bravely +kneeling +keenly +meadow +noblest +complex +tempest +guidance +prospects +humbly +serene +roughly +dainty +brightness +restrain +splendor +pepper +basin +creeping +matthew +pony +vigour +accepts +drunken +worried +hasten +instincts +ghastly +patron +stations +louder +bursting +mournful +traitor +cautious +prior +beggar +chimney +davis +striving +converse +graces +eastward +handful +usage +villain +banished +serpent +captains +settlers +gaining +valiant +buying +shepherd +heated +travels +ali +hostess +urgent +suffice +drifted +deceased +alert +aided +blanket +pretence +andy +oven +rounded +northward +dusty +bishops +complaints +hinder +extract +lighter +kisses +sternly +footing +statesman +rebels +edges +stormy +bury +actor +blossoms +ethel +polish +shudder +begging +amy +cargo +skilful +conferred +torment +blankets +covers +bonnet +persia +lesser +indulged +springing +valued +rugged +aloft +parlour +argue +dearly +logic +panic +restrained +vainly +enlarged +franklin +tasted +rural +torrent +refrain +kissing +gorgeous +sustain +epoch +lacking +granite +delights +joyful +slumber +detached +needle +repent +behave +richly +controlled +flora +rely +dimly +withered +diet +praises +fulfil +mantle +chicken +barrel +distrust +hunters +feather +goodly +luncheon +eighteenth +expert +coolly +mistakes +jacket +gleaming +swimming +perplexed +emma +impress +bounded +worshipped +baker +shattered +olive +ernest +martial +waiter +detained +items +promote +seizing +sinner +vigor +devote +warlike +kindled +dragging +mare +sleepy +mason +foster +expose +oxen +stuart +birthday +hammer +fragrant +bleeding +sheltered +circuit +tended +lectures +plunder +jungle +numbered +famine +fuller +darted +fuel +tranquil +vicious +banquet +lighting +scanning +patent +courtyard +detailed +closet +compel +inland +pretext +stationed +margin +settling +billion +shorter +betwixt +morgan +chapters +worthless +charlie +scanty +compound +pilot +suspense +dining +joining +weekly +trenches +borrow +swelling +favoured +topic +superb +strengthen +sunrise +sturdy +dissolved +lifetime +dispersed +sergeant +brigade +verdict +honors +panting +females +richest +brighter +tiger +sabbath +crooked +prescribed +rector +honored +highway +spacious +tearing +ally +ascent +fishes +rubbing +standards +afore +ribbon +pulpit +nineteen +rescued +counting +perfume +bother +essay +renew +suggests +rider +leaping +squadron +bowing +keeper +homeward +finely +marvel +condemn +elders +sweetly +unique +piercing +sanction +forlorn +dispose +withal +sweetest +consul +raging +publish +knocking +insight +stature +oblige +urging +courses +countless +rapture +tonight +trumpet +parker +firmness +comic +breeding +factor +handled +saloon +stumbled +gladness +practise +judging +treating +forcing +ascend +countess +binding +exceed +champagne +shuddered +carter +parson +rascal +inspire +banner +divorce +nineteenth +weaker +ticket +backwards +provoked +gallop +dagger +passive +mystic +tavern +cradle +rifles +censure +sobbing +wearied +needful +fireplace +gravel +affords +prompted +bullets +moisture +furnace +healing +fewer +apron +rotten +richer +pamphlet +divers +detach +gaily +gifted +planet +enforced +vincent +fluid +brightly +damsel +frantic +neatly +anon +ascribed +insane +milan +hardened +discern +hopeful +pronounce +hastings +grievous +beseech +dances +commence +daisy +pleading +disdain +parcel +replies +drawer +homely +ruling +printing +blossom +bridle +waistcoat +extends +confirm +listing +projects +deprive +traversed +announce +hateful +gothic +coolness +coachman +expend +stepping +resign +despatch +reject +ruby +fragment +darker +flatter +patches +ordained +devout +outrage +vary +doubled +sidney +schooner +flaming +offend +sheriff +encamped +nobler +packet +shabby +classic +accuse +bridges +players +sixteenth +embarked +idol +pension +tumbled +monkey +hazard +dora +attire +marine +soothing +devised +singer +spaces +disguised +antique +poisoned +alien +sorely +summon +depressed +recourse +tortured +thickly +sounding +sombre +duel +implies +cable +ridden +acre +gilded +clumsy +satin +displeased +odor +clearer +prairie +feudal +easter +freshness +crosses +blushing +equipped +sinful +starving +bedside +abrupt +excused +injure +drooping +adored +pasture +pillar +import +founder +torch +trusting +butler +rattle +edit +gotten +headlong +outfit +valour +grammar +relaxed +mentions +muddy +arches +aspects +senior +fragrance +jenny +choosing +frighten +grotesque +tutor +besieged +stony +demon +treatise +trading +extinct +handling +boyhood +thickness +darwin +fixing +harris +rustic +nodding +snowy +shilling +swollen +stubborn +orchard +muscle +speedy +daybreak +coral +fairest +bondage +grandson +leo +proving +mounting +rushes +watchful +harness +perchance +forbade +channels +zealous +stating +sundry +prostrate +whistling +unfit +relish +slipping +forwards +entreat +belly +neutral +grasping +compose +icy +abused +armor +detect +banker +disclaim +watches +achieve +incense +jordan +fruitful +scoundrel +howling +tailor +flourish +trifles +dashing +shameful +topics +expends +parade +helmet +impose +wooded +valet +proclaim +ravine +boyish +potent +tilde +pathos +satire +delete +remnant +ignored +thrilling +lastly +airy +sketches +abyss +baffled +planning +drawings +traveled +alan +nicely +pirates +enforce +briskly +buttons +crushing +threaten +undone +frankness +rogers +villa +resource +confine +sewing +dusky +appoint +suppress +layer +kettle +boldness +mature +cuba +rabbit +needless +yankee +blinded +player +thicket +walker +outstretched +oneself +futile +fifteenth +dripping +insect +values +brooding +baptism +intrigue +senseless +yearly +baron +imply +posture +leon +beset +thereto +jewel +regained +jumping +rainy +concrete +lustre +uproar +cavern +combine +menace +pilgrims +silken +litter +fondly +tariff +dragon +ranges +frenzy +thirsty +charter +boasted +item +linger +shady +confer +pitied +involve +wanton +repay +routine +grassy +witty +yearning +cheering +bounty +renown +mayor +wrinkled +defy +junction +glories +constrained +hardware +counties +mocking +rebuke +morbid +outcome +coldness +renowned +circus +moustache +proverb +biggest +nursing +weighing +avenge +ridges +perils +larry +aloof +chickens +placid +affirm +schedule +calmness +cherish +exert +riot +tending +bacon +wasting +strata +sculpture +tangled +flavor +luggage +feebly +woven +rubbish +chaos +twinkling +muffled +accents +outbreak +turner +filthy +dealings +vanish +astray +workman +bustle +fabric +patty +discreet +accessed +preface +quiver +deserts +denounced +eric +phantom +horsemen +whirling +instruct +dickens +purest +doubly +forbear +treaties +fearless +watson +bridegroom +curate +mining +motto +faction +melting +console +fruitless +ransom +surplus +shiver +outset +lament +tissue +impelled +epic +lemon +robber +impart +statute +barry +girdle +basil +biting +button +headache +tenant +dreamy +unkind +inscribed +cushions +programme +markets +humane +languid +curses +planting +greedy +suffrage +aching +ninety +bobby +longest +danish +surround +random +afresh +ruddy +rusty +profess +sickly +duchess +regain +churchyard +fondness +quicker +thereon +balloon +amiss +sticking +forsake +eden +baptized +pastor +mutton +packing +otto +sweetheart +renounce +lifeless +adore +orphan +symbols +partake +profane +foreseen +conceit +commend +bristol +revive +connect +princely +downwards +tunnel +ivy +puzzle +expanse +shocking +rudely +balanced +fable +matches +index +cigars +liver +transmit +dispatch +onto +liar +dungeon +pagan +sordid +amber +shipping +roberts +semblance +fervent +earthquake +sloping +smoothly +tension +intrigues +comments +wedded +whiteness +paved +scruple +paintings +therewith +colleagues +shrinking +tickets +omit +beware +worker +incline +hardest +toilet +buddha +offense +woodland +gentry +penance +rooted +outburst +devour +brandon +speechless +annals +discord +archie +detain +soda +naughty +salon +idly +peru +candid +blooming +cooper +nasty +breeches +abound +essays +plaster +chairman +dismiss +provoke +reside +hazel +farthest +invent +climax +avowed +tempting +define +stretches +cupboard +digest +vale +methinks +barley +plateau +devise +rubber +adieu +exclude +whisky +inflict +nightfall +hermit +divert +explore +skipper +tiresome +insure +laboured +shepherds +lilies +ballad +befall +teddy +daresay +marches +chaplain +deceit +challenged +herald +lowly +engraved +bowels +blindness +maxim +marshall +baking +visage +mingle +bathing +client +ghostly +tenor +arouse +verbal +brazil +recess +unclean +infer +alley +softness +spinning +farming +fasten +actress +valor +untouched +tactics +adverse +rosa +nina +caprice +candy +planets +sanguine +odour +convict +package +pirate +salmon +alma +hetty +madly +pudding +suburbs +dares +pondered +raiment +foreman +thirteenth +sultan +medal +ether +heading +subdue +adorn +warmer +cluster +fullest +scornful +bailey +dingy +scaffold +flutter +martyr +handy +drawers +craving +bureau +oscar +huddled +diverse +ardor +necklace +alight +steadfast +inflamed +spelling +respond +fourteenth +singers +cloudy +fleeting +phases +latent +whiskey +willow +sojourn +booty +camel +implore +gliding +tested +racing +brightest +joel +extremes +labored +exit +humming +sometime +adult +solace +hardship +donkey +trader +rumour +amply +confide +favors +withstand +robust +monthly +ignore +envoy +contrive +chatter +judas +reforms +clatter +allude +junior +tony +signals +drying +harshly +limestone +pebbles +willie +knitting +ordeal +foresee +repast +abject +bridal +insults +twisting +bully +canon +oval +cedar +soften +comely +redeem +poultry +horseman +wager +pathway +wistful +advent +drowning +faintest +befell +crawling +lumber +lavish +galley +blunder +rainbow +hereby +outlook +smitten +installed +marking +consume +resent +sterling +barking +bower +factors +midday +aright +nigger +lily +cursing +marco +folding +discerned +helpful +persist +frigate +spotted +atoms +outlet +withheld +fairies +taller +arctic +colleague +butcher +drowsy +sunken +collins +gallows +hindu +omen +ensure +denotes +sentenced +unfair +bucket +glitter +bamboo +pallid +mildly +dealer +yorkshire +emblem +groaning +fiscal +charging +railing +inferred +wardrobe +texture +priesthood +seaman +palmer +weighty +morsel +meagre +shaggy +nightmare +carbon +lawless +stairway +sarcasm +poorly +fitness +thoughtless +mellow +austere +pensive +flavour +ante +baptist +scatter +boer +extant +brazen +bolted +abel +meddle +axis +kinder +closes +giddy +crouching +buddhist +collapse +varies +mainland +repute +cushion +confound +layers +glimmer +equals +redress +crafty +enlarge +hardness +dotted +solar +heartless +disclose +juncture +foresaw +quaker +charcoal +chilly +friction +wholesale +trodden +translate +mortar +truthful +caress +curling +abreast +sample +matron +claiming +plural +spider +jelly +parchment +playful +barber +profile +provides +noting +heightened +finance +averse +azure +campaigns +lessen +acquaint +tribune +pilgrim +paltry +sporting +maker +gaping +standpoint +basic +boiler +banish +prosper +friar +nightly +monkeys +enjoys +riddle +cleaning +exclaim +voting +darkly +bearded +flannel +fasting +trailer +avert +unchanged +mirrors +phoebe +conform +railways +paddle +innate +volley +agrees +simpler +padre +rustle +lava +trillion +lyric +downright +foresight +pallor +salad +greetings +chestnut +vicar +noel +attic +savings +dispense +trusty +plaintive +ethics +pitcher +annoy +amends +forenoon +sparkle +outskirts +fiddle +football +derby +quarry +rigging +dizzy +sequence +cabbage +assign +tackle +sceptre +eddy +twinkle +sandstone +fathom +lever +muster +sleepless +mortgage +succour +repress +valid +witchcraft +paula +muzzle +clusters +guinea +tarry +glossy +iris +relic +vocal +downfall +construct +undue +vapor +unlocked +foretold +artful +downcast +missions +pregnant +reddish +peeping +aghast +turmoil +forfeit +inspect +perverse +dover +ambush +verdure +ankle +oddly +hairy +northwest +laurel +wary +converts +weakly +tremor +curly +prestige +freezing +heedless +sentry +rowing +sulphur +cooling +beastly +nuisance +abstain +stanza +target +dictate +empress +manure +nigel +sidewalk +grievance +axes +bony +invest +rabble +rally +rumor +girlish +shortest +retort +rocking +emerge +lonesome +unarmed +victuals +quickness +parma +diseased +irons +canyon +vapour +lances +godly +therefrom +davy +framework +squirrel +blacksmith +withhold +outright +cement +fraction +purer +presses +dissolve +bases +maxwell +closest +reproof +weaving +earnings +indoors +picnic +misled +pompous +brian +respite +exploit +tracing +passport +confines +township +needy +beaver +lookout +onion +couples +speakers +woollen +lightness +bitten +vested +yawning +mustache +whirlwind +farthing +biscuit +reserves +uncouth +armchair +greasy +leaden +lining +embark +untrue +grating +wintry +stalwart +stamping +apiece +wilful +timely +herein +canton +moslem +invade +livid +buggy +prolong +weaken +repressed +sequel diff --git a/tests/data/3-syllable-words.txt b/tests/data/3-syllable-words.txt new file mode 100755 index 0000000..afa8541 --- /dev/null +++ b/tests/data/3-syllable-words.txt @@ -0,0 +1,2002 @@ +another +however +together +anything +already +several +united +general +family +really +dishonour +different +possible +following +understand +beautiful +overthrown +fishermen +fundraising +inasmuch +countrymen +character +interest +idea +continued +everything +suddenly +position +remember +natural +copyright +history +certainly +attention +government +company +probably +important +opinion +agreement +gentleman +various +according +beginning +donations +enemy +condition +including +influence +appearance +whatever +period +occasion +easily +afterwards +expression +property +usual +expected +entirely +direction +considered +permission +afternoon +discovered +difficult +officers +happiness +religion +personal +understood +determined +century +intended +terrible +medium +possession +perfectly +memory +existence +religious +repeated +physical +example +directly +serious +sufficient +wonderful +paragraph +official +provided +opposite +distribute +consider +accepted +advantage +ideas +decided +officer +difference +curious +excellent +confidence +exactly +importance +finally +liberty +gentlemen +concerning +forgotten +evidence +similar +conditions +otherwise +carefully +presented +remembered +animal +created +quietly +regarded +succeeded +anyone +animals +occupied +opening +capital +presently +permitted +enemies +companion +established +satisfied +numerous +frequently +powerful +national +principal +suggested +equally +principle +consequence +principles +characters +dangerous +genius +popular +appointed +demanded +distinguished +interests +sympathy +affection +suffering +proceeded +carrying +collection +imagine +admitted +arrival +november +december +impression +relations +rapidly +regular +quality +discover +completely +included +countenance +previous +poetry +policy +excitement +assistance +dignity +october +possibly +separate +receiving +capable +instantly +relation +practical +yesterday +delicate +continue +unable +victory +constantly +india +connected +addition +committed +italian +acquaintance +sacrifice +exercise +theory +commanded +nobody +minister +energy +provisions +description +excited +citizens +intention +thoroughly +everywhere +connection +protection +edition +directed +evident +surrounded +requirements +introduced +becoming +volunteers +whenever +successful +devoted +israel +disappeared +accustomed +recognized +innocent +attitude +returning +visible +actual +companions +prisoner +utterly +violent +september +departure +delivered +equipment +earlier +visited +anywhere +extremely +quantity +conclusion +computer +affected +origin +eternal +audience +limited +services +library +remaining +containing +confusion +editions +attended +glorious +acquainted +unhappy +article +prisoners +adopted +absolute +readily +argument +related +punishment +articles +extended +emotion +destruction +increasing +expenses +ignorant +generous +mystery +consciousness +formerly +production +compliance +reported +listening +accomplished +purposes +delighted +suspicion +opinions +indicate +misery +properly +singular +violence +commercial +suggestion +domestic +concluded +reference +approaching +providing +ignorance +hitherto +benefit +eagerly +atmosphere +invited +departed +catholic +replacement +division +slavery +decision +probable +governor +forever +delightful +occasions +readable +beloved +apparent +attempted +centuries +hastily +located +announcement +circumstance +distinction +essential +recovered +belonging +permanent +gratitude +sentiment +desperate +imagined +enormous +defective +conviction +insisted +selected +developed +mistaken +damages +ambition +ideal +descended +discussion +instrument +elements +entering +africa +sovereign +horrible +displaying +abandoned +eleven +collected +arrangement +politics +industry +profession +interview +devotion +creation +supported +uniform +multitude +infinite +copying +apartment +sensible +charity +realized +element +reflection +accordance +examined +somebody +incident +poverty +prevented +completed +resistance +suspected +deserted +cavalry +exception +offering +exhausted +critical +directions +residence +steadily +intimate +enterprise +favourite +heavily +assembled +existed +settlement +overcome +performing +recently +instructions +furniture +additions +adventure +royalty +annual +obtaining +moreover +average +conducted +obvious +foundation +liberal +commonly +wondering +tenderness +cardinal +regiment +distinctly +creating +performance +election +conception +reflected +preceding +definite +emperor +tendency +enabled +earnestly +genuine +passages +succession +persuaded +inquiry +perfection +wherever +fortunate +newspaper +employment +misfortune +providence +determine +commission +provinces +relative +wandering +provision +regarding +vanity +deliver +represent +existing +suitable +legally +gathering +examine +instances +theatre +realize +intercourse +criminal +intervals +intellect +resources +narrative +sentiments +amusement +recognize +preparing +construction +positive +attracted +satisfy +agony +maria +enjoyment +horizon +precisely +canada +registered +estimate +visitor +harmony +paragraphs +unconscious +mutual +external +universe +instruction +injury +earliest +enable +discipline +converted +wilderness +offices +silently +responded +uncertain +neglected +exquisite +engagement +messenger +privilege +physician +organized +covering +tradition +sensation +travelling +tragedy +specific +commander +paradise +villages +favorite +criticism +hospital +restrictions +musical +samuel +extensive +emotions +jealousy +translation +procession +elected +citizen +reminded +funeral +arrested +consisted +proceedings +romantic +reception +heartily +warriors +abruptly +solution +pretended +assembly +tobacco +entity +bitterly +colony +disclaimers +financial +entertained +medicine +reverence +appointment +solicit +objection +arrangements +complying +grandfather +vigorous +accepting +primitive +arguments +surrender +establish +appearing +department +handkerchief +easier +assurance +heavenly +proceeding +impatient +certainty +salvation +tremendous +afforded +newspapers +improvement +treasury +visitors +erected +recover +committee +promises +effective +distinguish +manifest +confession +management +moderate +area +solitude +instruments +struggling +federal +editor +acknowledge +motionless +remedy +pacific +gratefully +president +justified +openly +advancing +recorded +dramatic +internal +furious +adventures +exclusion +luxury +awakened +protected +contented +neighborhood +abundance +medical +garrison +heroic +prominent +affections +surrounding +remainder +expecting +respecting +unpleasant +anxiously +innocence +incomplete +secretly +invention +piano +defeated +electric +interval +occupy +cruelty +proposal +destiny +recognised +ancestors +commanding +happily +temptation +subsequent +willingly +spectacle +uneasy +attractive +interfere +effected +passengers +donation +witnesses +specified +calculate +savages +eloquence +sensitive +appetite +picturesque +courtesy +remembrance +elegant +avoided +delicious +offended +memories +encounter +consisting +sufferings +translated +formation +immortal +gallery +parallel +continent +impatience +unity +images +submitted +speedily +consented +amazement +hereafter +eminent +examples +exercised +everyone +abundant +undertake +magazine +bitterness +guardian +rejected +injustice +expressions +protested +abandon +artistic +desirous +alliance +maximum +hideous +hamilton +unworthy +modified +miracle +observing +resemblance +rebellion +forbidden +requested +promoting +purity +solemnly +republic +telephone +infantry +companies +addresses +introduce +conversion +african +answering +virtuous +anyway +constructed +editing +accomplish +suspended +threatening +addressing +encourage +intentions +liable +traveller +dependent +endeavour +convention +endeavoured +prejudice +lieutenant +surprising +assisted +extending +marvellous +confident +selection +inquiries +beforehand +retorted +cheerfully +righteousness +producing +reasoning +gravity +languages +asserted +bodily +oliver +faculty +possessions +disciples +divisions +justify +manuscript +warrior +impressions +specially +unwilling +adapted +civilized +invented +encountered +maintaining +barbara +respected +behaviour +desolate +revenue +infringement +eagerness +visiting +travellers +enjoying +totally +tenderly +disaster +computers +ascended +incidents +dominion +complexion +relatives +comprehend +opera +officials +compliment +approval +compassion +latitude +projected +resentment +transcription +document +glittering +attachment +ambitious +holiday +recollect +recommend +suspicious +resulting +seventy +clergyman +disorder +exalted +binary +anyhow +instructed +bewildered +positions +edited +continues +loyalty +documents +expressing +awaiting +potatoes +entertain +faculties +hesitate +seventeen +feminine +warranties +happier +gigantic +tyranny +dignified +magistrate +respective +studying +depended +locations +neighbouring +promotion +faithfully +excellence +awaited +poetic +consulted +whereupon +terribly +suspicions +sentences +radiant +indignant +pertaining +disclaimer +specimens +ascertain +supposing +attending +angrily +hurriedly +quantities +produces +admission +terrified +persisted +conference +generals +surroundings +occasioned +invasion +discretion +exceeding +triumphant +defiance +grandmother +promising +scenery +specimen +eloquent +manager +rational +processing +accurate +refusal +salary +defended +ingenious +successor +ultimate +submission +monument +exciting +prosperous +declaring +thoughtfully +allowing +adjoining +cathedral +caroline +tomorrow +finishing +forgetting +mysteries +honesty +sacrificed +utterance +reflections +pathetic +imperfect +hurrying +attempting +offensive +florida +reverend +successive +perception +buffalo +develop +excessive +mexican +piety +substantial +subjected +exhibit +corruption +cabinet +repeating +allowance +treachery +attendant +murderer +theories +possesses +factory +attendance +honestly +descending +sincerely +succeeding +cautiously +afflicted +petition +sparkling +disposal +carriages +ornament +fantastic +patiently +foliage +influenced +governments +pleasantly +columbus +attendants +modesty +diana +decisive +negative +occurrence +festival +wickedness +carelessly +preference +removal +assertion +comedy +adequate +newsletter +battery +attraction +detective +revolver +paces +paperwork +emphasis +exclusive +uncommon +confounded +envelope +whoever +expensive +headquarters +startling +cigarette +embarrassed +volunteer +reaction +regiments +partially +allusion +benjamin +ministry +sexual +marrying +penalty +corridor +proportions +alternate +quivering +objected +ascertained +acceptance +cordial +engineer +encoding +disappear +diminished +objections +suggestions +diseases +detected +cicero +communion +forgiveness +awfully +commonplace +resembled +contracted +inscription +indulgence +enlightened +compliments +extension +constitute +inflicted +downloading +overhead +commencement +oppression +publicly +melody +descendants +candidate +obstinate +foreigners +elderly +overwhelmed +telegraph +varying +barbarous +modify +earnestness +exertion +refusing +inspection +regretted +pursuing +foundations +undertook +telegram +magistrates +substitute +primary +prophecy +spectacles +obsolete +competent +gratified +circular +securing +neighboring +accounted +augustus +ivory +policeman +personage +classical +alongside +rewarded +forgiven +realised +arising +observer +avenue +elephant +affecting +efficient +supporting +disturbance +seemingly +painfully +imposing +notable +invested +imprisoned +assented +ideals +resulted +illusion +troublesome +repentance +compromise +respectful +chariot +assistant +saluted +boundary +indebted +processes +weariness +resolute +consumption +resemble +gradual +shadowy +annoyance +execute +monarchy +endeavor +barrier +politeness +courteous +logical +discussing +judicial +consistent +ridicule +verily +exertions +tedious +impressive +displeasure +underneath +resisted +provincial +merciful +genial +conjecture +covenant +interposed +properties +perilous +obstacle +destitute +plantation +pitiful +requisite +payable +intensely +dominions +amazing +trivial +rejoicing +removing +palaces +sorrowful +improvements +typical +recognise +expressive +destroying +excepting +champion +admiring +chemical +especial +attentive +maintenance +admiral +resume +imitate +happening +majestic +messages +agency +arisen +intently +depression +technical +vehicle +flattering +prodigious +fortified +salute +contribute +attribute +discontent +orderly +messengers +penetrate +holiness +housekeeper +productions +militia +nobleman +energies +affliction +photograph +jupiter +transparent +qualified +odious +loneliness +dazzling +novelty +charities +elephants +endurance +organic +allegiance +expressly +duration +collecting +precaution +privately +endeavored +entrusted +questioning +monuments +loveliness +confronted +traveling +profoundly +casual +analyzed +historic +studio +exposure +unbroken +apollo +inserted +treacherous +invalid +corrected +infancy +gentleness +explosion +selfishness +exceptions +insolent +behavior +nowadays +realise +feverish +tropical +overthrow +achievement +assumption +humorous +composure +orator +ecstasy +retirement +authorized +reconciled +mercury +elegance +chivalry +luminous +confided +escaping +terrific +parliament +sympathies +suicide +sinister +advocate +destructive +reporter +detachment +infernal +fugitive +excluded +balcony +nevada +disastrous +burial +employee +employer +transaction +victories +attorney +politely +italians +impulses +ascending +cruelly +happiest +insulted +enchanted +reflecting +conqueror +dynasty +signature +heretofore +orthodox +offerings +irony +inquiring +colonists +illustrate +nursery +adoption +reluctance +imported +sovereigns +incessant +correctly +embroidered +bravery +confinement +transported +insolence +secrecy +thereupon +unlucky +adjacent +attacking +deposit +refinement +forcibly +reprinted +gaiety +robbery +transmitted +gratify +heavier +batteries +pilgrimage +idleness +merrily +excursion +eminence +montana +shivering +premises +productive +discouraged +persuasion +invaded +ungrateful +cultivate +marian +magnitude +precautions +requiring +opponent +cowardly +protecting +desiring +precision +seventeenth +dreadfully +asterisk +edifice +reckoning +syllable +handwriting +reduction +cordially +dialogue +diligence +disgusted +retiring +valentine +dimensions +infamous +powerless +passenger +episode +populace +persistent +inviting +criminals +leisurely +audible +radiance +underline +unequal +enduring +deference +formally +manual +disturbing +mischievous +foreigner +masculine +umbrella +mineral +alaska +aversion +customers +flattery +director +temporal +patriot +malicious +skeleton +progressive +reconcile +insurance +interrupt +signify +contemplate +aforesaid +befallen +awaken +conductor +dependence +guarantee +procedure +projecting +cheerfulness +deity +muscular +restaurant +exhaustion +hercules +attach +fellowship +demanding +ensuring +longitude +secondly +violin +radical +accursed +tendencies +resident +ominous +overboard +currency +violet +mastery +objective +reluctant +patronage +revenues +vexation +indicates +overheard +thereafter +exporting +taxation +disputed +suggestive +expansion +sophia +commanders +interfered +noticing +courtiers +consequent +particles +signifies +paternal +engaging +avoiding +abolished +idiot +applying +creative +lowering +degraded +merchandise +despairing +asylum +gardener +protector +concealment +accession +connexion +considers +achievements +deserving +veteran +advancement +inventor +hopelessly +judicious +testify +governess +orchestra +foregoing +maternal +maryland +corrections +completion +forsaken +spirited +christendom +defending +disregard +notifies +asunder +mentioning +pastoral +musician +mentally +apostle +convincing +commented +precipice +outdated +dialect +cowardice +denial +underground +vividly +puritan +conjunction +oppressive +formula +plentiful +constable +enveloped +enmity +improper +architect +register +heroine +defensive +constitutes +fisherman +measuring +rebellious +consulting +manila +massacre +transition +burgundy +collections +alcohol +impending +declining +spectator +winchester +commonwealth +tremulous +admitting +discomfort +bachelor +courageous +carpenter +concluding +dictated +appalling +imminent +dominant +leadership +wearily +diary +apprehend +securely +connecting +celebrate +deputy +discussions +refreshment +amendment +appealing +vertical +manchester +silvery +inherent +preventing +inference +enclosure +publisher +refreshing +irene +vinegar +uncovered +gracefully +mightily +deities +overtake +improving +ferocious +subsistence +disciple +revival +citadel +despotism +internet +mechanism +directors +brilliancy +extracted +veranda +diminish +complaining +temperate +gambling +magazines +submarine +regardless +fearfully +convicted +deception +religions +governing +prophetic +undergo +poisonous +concession +starvation +fortitude +malignant +accorded +eccentric +anecdote +scrutiny +diversion +correspond +interpret +vehement +operate +disgraceful +redemption +embassy +unfinished +frivolous +deficient +heroism +apparel +carelessness +connections +industries +forefathers +restricted +ludicrous +colossal +stimulus +vigilance +overcoat +expanded +archbishop +abuses +chocolate +privileged +overtook +caravan +eliza +comparing +implements +recompense +cylinder +summary +photographs +colleges +vehemence +unlikely +joyfully +purposely +remedies +indexes +investment +catalogue +strenuous +chemistry +maritime +secular +averted +oracle +regulate +etiquette +theater +thanksgiving +conducting +distorted +obliging +opium +pavilion +metallic +instructive +revealing +prevalent +magical +manifold +volcanic +magnetic +decency +observance +impartial +slippery +oxygen +wellington +heresy +location +ancestor +quotation +custody +plausible +rhetoric +avarice +commotion +congenial +telescope +deposits +renaissance +angelo +murderous +impudent +genoa +courier +literal +usefulness +profusion +twentieth +overcame +womanhood +envious +forbidding +amateur +morally +perspective +reverie +nourishment +corrupted +constancy +distressing +novelist +editors +intricate +collision +supplying +indirect +unnoticed +precedent +vacation +inspiring +contradict +servitude +elastic +prettiest +involving +acquiring +rendezvous +watery +publishing +customer +genesis +eleventh +partition +fanciful +sentinel +unmarried +aesthetic +contentment +organism +emphatic +occurring +impudence +corporal +heritage +brotherhood +inherit +handsomely +butterfly +narrowly +insulting +diligent +wretchedness +encampment +possessor +absorbing +descendant +engineers +clerical +ordinance +vocation +admirer +timothy +auspicious +reducing +ritual +sanctity +cynical +inspector +adjustment +epistle +turbulent +unaware +initial +minimum +correction +overlook +magician +mystical +inhabit +willingness +composing +controlling +temperance +translations +martyrdom +listener +genera +contrivance +museum +alphabet +pernicious +secluded +resisting +disgusting +ethical +recital +ownership +scrupulous +momentous +albeit +civilised +defiant +suppression +unjustly +aggressive +predicted +ponderous +arrogance +commissioned +ratio +masterpiece +embraces +cavalier +rivalry +pestilence +receiver +distinctive +consummate +populous +baronet +commodore +advocates +mutiny +chronicles +comforting +potato +transient +anarchy +revision +disordered +menacing +conveyance +chivalrous +capricious +entreaty +womanly +digestion +infamy +amorous +premature +extinction +scandalous +multiply +subscription +copious +privacy +arena +sensual +trustworthy +jamaica +traveler +particle +stupendous +statistics +calendar +repulsive +conclusive +peaceable +emerald +uppermost +arduous +senators +nominal +demonstrate +merciless +coloring +perusal +discarded +infection +ruinous +conventions +stumbling +conveying +syllables +enchantment +composer +audacious +partnership +pioneer +abnormal +omission +canopy +athletic +drunkenness +intrusion +exacting +percentage +cavity +abstraction +forefinger +erection +withdrawal +senator +ancestral +forbearance +workmanship +legacy +compelling +flickering +derision +vehicles +whimsical +explicit +indolent +indistinct +coveted +sumptuous +reliance +panama +everyday +evermore +parapet +cessation +fervently +disabled +arrogant +livelihood +scattering +somerset +surveying +desertion +believer +negligence +millionaire +flowering +unwonted +restlessness +actively +countryman +outrageous +foolishness +hurricane +indulging +atrocious +tapestry +impotent +acquitted +palpable +apprentice +compartment +sarcastic +emerging +atonement +whereabouts +mountainous +annoying +unreal +injunction +scarcity +aggregate +illegal +stealthily +volcano +sullenly +commissions +resounded +gunpowder +combining +pitiless +vacancy +crumbling +wanderer +depicted +boisterous +lucia +penitent +abiding +immoral +dishonest +supplement +cleverness +ascetic +quotations +friendliness +rejection +variance +firmament +absorption +terminate +cleanliness +collective +philippines +ignoble +adjective +folio +dismissal +enchanting +purified diff --git a/tests/data/4-syllable-words.txt b/tests/data/4-syllable-words.txt new file mode 100755 index 0000000..77c5887 --- /dev/null +++ b/tests/data/4-syllable-words.txt @@ -0,0 +1,803 @@ +electronic +necessary +information +especially +undertaken +particular +impossible +generally +society +experience +circumstances +conversation +political +difficulties +remarkably +authority +original +usually +situation +military +ordinary +interesting +overtaken +violation +honourable +altogether +additional +distribution +peculiar +necessity +education +material +naturally +remarkable +evidently +immediate +interested +apparently +familiar +actually +distributed +literature +population +inhabitants +satisfaction +accompanied +understanding +absolutely +explanation +superior +spiritual +distributing +gradually +intelligence +variety +everybody +development +literary +interrupted +represented +admiration +anxiety +miserable +sufficiently +anybody +reality +valuable +discovery +mysterious +expedition +universal +unfortunate +philosophy +comfortable +european +melancholy +reputation +agreeable +resolution +majority +reasonable +humanity +opposition +celebrated +disposition +enthusiasm +materials +community +magnificent +nevertheless +equivalent +generations +independent +observation +applicable +separated +seriously +calculated +accordingly +constitution +generation +limitation +experienced +practically +scientific +territory +alexander +operation +exceedingly +execution +astonishment +activity +security +capacity +available +unusual +establishment +interior +notwithstanding +consequences +hesitated +ability +references +application +intelligent +consequently +ceremony +carolina +contributions +operations +indignation +prosperity +whatsoever +considering +previously +obedience +advantages +independence +solitary +historical +unexpected +respectable +testimony +disappointed +simplicity +comparison +composition +indifferent +occupation +invitation +inferior +disappointment +responsible +indicated +indifference +institutions +introduction +revolution +admirable +accompany +ridiculous +publication +correspondence +preparations +alteration +preparation +situated +occasional +observations +derivative +convenient +secretary +experiment +cultivated +perpetual +affectionate +proposition +revelation +recognition +undoubtedly +indirectly +temporary +desirable +artillery +combination +temperature +professional +agitation +institution +obviously +recollection +identify +expectation +invisible +hesitation +formidable +machinery +economic +violently +philosopher +incapable +exhibited +amiable +economy +favourable +prohibition +artificial +illustrious +curiously +inspiration +particulars +apprehension +significance +personally +morality +inclination +differences +imperial +conspicuous +nobility +declaration +separation +recommended +legislation +corresponding +favorable +appropriate +privileges +fashionable +positively +inaccurate +appreciate +literally +consolation +phenomena +regularly +inheritance +experiments +periodic +entertainment +influences +resembling +dedicated +prominently +delicacy +indemnify +sacrifices +obligation +honorable +significant +infinitely +agitated +elaborate +elevation +interpreted +extremity +mechanical +successfully +temperament +contributed +sincerity +facility +indicating +incredible +everlasting +deductible +imitation +encouragement +impatiently +varieties +irregular +illustrated +fundamental +cultivation +representing +venerable +australia +illustration +congregation +undertaking +subsequently +animated +industrial +elevated +equality +communicate +essentially +vicinity +sympathetic +continuous +continual +examining +peculiarly +vegetables +customary +wonderfully +confirmation +antiquity +severity +conservative +beautifully +inhabited +exclamation +apparatus +ceremonies +decidedly +identical +superstition +remembering +vegetable +eternity +propriety +unconsciously +intimacy +legitimate +manifested +fidelity +architecture +evolution +deliberate +victorious +recovery +unnatural +exclusively +corporation +exercises +sovereignty +accessible +philosophers +historian +intensity +democracy +deposited +analysis +inherited +ultimately +missionary +prejudices +humility +diameter +identity +poetical +ambassador +constituted +interference +extravagant +momentary +rapidity +alternative +astonishing +competition +obedient +memorable +contemplation +manufacture +comfortably +exhibition +uneasiness +controversy +resignation +singularly +repeatedly +conspiracy +preservation +continuing +calamity +profitable +speculation +discoveries +principally +celestial +patriotism +complicated +apology +imprisonment +restoration +jurisdiction +victoria +penetrated +agriculture +accuracy +democratic +isolated +conventional +proclamation +indiana +executive +comparative +proprietor +uncertainty +concentrated +ammunition +secondary +persecution +circulation +passionately +nominally +phenomenon +canadian +convenience +desperately +habitual +voluntary +contemplated +expedient +compensation +decorated +sentimental +hostility +regulations +posterity +patriotic +interruption +definition +overwhelming +energetic +repetition +legislature +fortunately +destination +associate +instinctively +subordinate +regulating +legislative +differently +furiously +relationship +demonstration +expectations +vegetation +confidential +alabama +integrity +solicited +fascinating +desolation +assuredly +activities +efficiency +tranquillity +navigation +admirably +approbation +theology +monastery +definitely +associates +communities +sanctuary +superstitious +expenditure +encouraging +diplomatic +compilation +captivity +vigorously +monotonous +catastrophe +respectfully +discovering +tolerably +punctuation +annually +resurrection +consecrated +obscurity +missionaries +arbitrary +benevolent +perplexity +companionship +emergency +contribution +supposition +synonymous +environment +solemnity +insurrection +iniquity +meditation +hypothesis +magnificence +necessities +accusation +irritated +industrious +adversary +luxurious +irritation +acceptable +accurately +divinity +occupations +supremacy +correspondent +reasonably +reluctantly +republican +explanations +notorious +estimation +exceptional +recollections +establishing +colonial +penetrating +superficial +identified +contributing +consequential +confidently +superfluous +accidental +continuance +delivery +variations +miraculous +insensible +variation +locality +hospitable +benevolence +indication +accomplishment +commissioners +arabian +fascination +inconvenience +contradiction +historians +consultation +habitation +disappearance +practicable +consternation +expenditures +territories +anonymous +injurious +discontinue +alternately +endeavouring +transportation +comprehension +incessantly +improbable +moderation +awakening +vitality +comprehensive +personages +congratulate +terminated +extravagance +tolerable +occupying +absurdity +resolutely +characterized +permanently +emotional +respectively +memorial +beneficial +separately +horizontal +termination +eminently +calculation +traditional +unsuccessful +politician +regulation +minority +acquisition +municipal +condemnation +miniature +regulated +intimately +unlimited +inconsistent +degradation +prosecution +abundantly +disadvantage +abolition +demonstrated +interpreter +redistribute +hostilities +acknowledgment +combinations +inadequate +developing +audacity +delicately +indefinite +perceptible +solicitude +effectual +contemptuous +felicity +obstinacy +conscientious +perseverance +harmonious +laborious +fertility +introducing +advantageous +millennium +theatrical +commodities +imperative +influential +automobile +insufficient +advertisement +spontaneous +apparition +utility +contemptible +intervention +susceptible +mathematics +substituted +physically +monopoly +animation +sagacity +dissatisfied +anticipate +inquisition +imperious +impetuous +cemetery +oblivion +prohibited +decoration +affectation +gratifying +stupidity +monotony +colorado +antagonist +presentation +exultation +coincidence +adventurous +dissolution +instituted +geography +systematic +virtually +conformity +invincible +impertinent +intuition +tabernacle +excessively +analogy +peninsula +manufactured +psychology +veritable +investigate +accomplishments +hypocrisy +noticeable +predecessor +diplomacy +similarly +facilities +transformation +ornamental +certificate +arabia +exposition +thermometer +desperation +civility +concentration +speculative +serenity +perspiration +stimulated +seriousness +mortality +maturity +relatively +isolation +biography +misunderstood +delirium +ingratitude +bewilderment +dictionary +adoration +celebration +conceivable +mediaeval +analogous +vivacity +veneration +manifestly +battalion +powerfully +erroneous +violated +supervision +velocity +deficiency +operating +vehemently +primarily +decorations +adventurer +unanimous +casually +administer +unimportant +deplorable +benefactor +bohemia +dexterity +mythology +circumference +ferocity +satisfying +reliable +stability +timidity +recreation +salutation +serviceable +operated +luxuriant +mutually +intimation +separating +oratory +electrical +alacrity +neutrality +unfamiliar +reformation +inhabitant +nomination +reproduction +consistency +inquisitive +affirmative +applications +precarious +arithmetic +considerate +officially +impunity +abandonment +idolatry +preferable +advertising +barbarian +proximity +dissipated +accommodate +automatic +ordinances +effectively +precipitate +embarrassing +demonstrations +detestable +abandoning +variable +diversity +meridian +continental +hysterical +disregarded +unscrupulous +adversity +salutary +provocation +tumultuous +exaltation +obstinately +embroidery +acquiescence +exploration +stationary +disconcerted +toleration +bohemian +affinity +lamentable +appellation +liberally +apprehensive +conveniently +lamentations diff --git a/tests/data/5-syllable-words.txt b/tests/data/5-syllable-words.txt new file mode 100755 index 0000000..bdedcc2 --- /dev/null +++ b/tests/data/5-syllable-words.txt @@ -0,0 +1,196 @@ +immediately +opportunity +considerable +individual +associated +particularly +intellectual +imagination +extraordinary +consideration +curiosity +liability +occasionally +necessarily +characteristic +continually +examination +communication +organization +civilization +possibility +individuals +solicitation +specifically +administration +determination +proprietary +satisfactory +originally +inevitable +opportunities +california +comparatively +representative +modification +disagreeable +international +representation +preliminary +experiences +considerably +personality +unnecessary +probability +deliberately +association +innumerable +communicated +invariably +investigation +constitutional +hospitality +representatives +educational +generosity +unfortunately +characteristics +interpretation +representations +considerations +enthusiastic +uncomfortable +appreciation +irresistible +contemporary +intolerable +redistributing +indispensable +imaginary +philosophical +eventually +agricultural +university +associations +exaggerated +hereditary +supernatural +possibilities +negotiations +unexpectedly +aristocracy +accompanying +effectually +universally +popularity +insignificant +aristocratic +explanatory +unusually +inevitably +ingenuity +organizations +communications +humiliation +unreasonable +immortality +perpetually +illuminated +gratification +electricity +intelligible +mechanically +civilisation +accumulated +originator +accommodation +theological +anticipation +justification +abominable +sensibility +affectionately +recommendation +imaginative +voluntarily +unsolicited +redistribution +accidentally +emancipation +deliberation +elementary +pecuniary +intermediate +manufacturing +geographical +ordinarily +manifestation +temporarily +inexplicable +perpendicular +laboratory +inability +superintendent +indescribable +exaggeration +regularity +impenetrable +disinterested +mathematical +qualifications +psychological +impracticable +accompaniment +editorial +exasperated +independently +organisation +accumulation +unaccountable +vocabulary +parliamentary +illumination +nationality +misunderstanding +universities +inseparable +economical +participation +intoxicated +ceremonial +initiative +inexhaustible +administrative +humiliating +periodical +interminable +similarity +congratulations +inaccessible +inconceivable +dissatisfaction +preparatory +continuation +invaluable +incorporated +contradictory +indefinitely +intoxication +subterranean +classification +anniversary +discrimination +appropriation +territorial +disobedience +uniformity +inexorable +equilibrium +assassination +manufacturers +geological +executioner +inexperienced +significantly +experimental +cooperation diff --git a/tests/data/6-syllable-words.txt b/tests/data/6-syllable-words.txt new file mode 100755 index 0000000..a064dc7 --- /dev/null +++ b/tests/data/6-syllable-words.txt @@ -0,0 +1,19 @@ +electronically +responsibility +ecclesiastical +mediterranean +revolutionary +identification +familiarity +involuntarily +peculiarities +simultaneously +impossibility +peculiarity +incomprehensible +originality +satisfactorily +unsatisfactory +respectability +unintelligible +reconciliation diff --git a/tests/data/7-syllable-words.txt b/tests/data/7-syllable-words.txt new file mode 100755 index 0000000..09780a7 --- /dev/null +++ b/tests/data/7-syllable-words.txt @@ -0,0 +1 @@ +individuality \ No newline at end of file diff --git a/tests/utils/numbers/test_leading_zero.py b/tests/utils/numbers/test_leading_zero.py index 747e73a..f08f217 100644 --- a/tests/utils/numbers/test_leading_zero.py +++ b/tests/utils/numbers/test_leading_zero.py @@ -1,6 +1,57 @@ # pylint: skip-file -from utils import leading_zero +from utils import is_number, gcs_time_to_ms, leading_zero +from google.protobuf.duration_pb2 import Duration + +################################################################################ +### is_number + +def test_is_number_empty(): + assert not is_number('') + +def test_is_number_string(): + assert not is_number('cleansio') + +def test_is_number_string_and_num(): + assert not is_number('hello123') + +def test_is_number_different_type(): + assert is_number(91327) + +def test_is_number_integer(): + assert is_number(str(91327)) + +def test_is_number_negative(): + assert is_number(str(-91327)) + +def test_is_number_float(): + assert is_number(str(91.327)) + +def test_is_number_negative_float(): + assert is_number('-91327.23') + assert is_number(str(-91327.23)) + +################################################################################ +### gcs_time_to_ms + +def test_gcs_time_to_ms_empty(): + assert gcs_time_to_ms('') == 0 and gcs_time_to_ms(None) == 0 + +def test_gcs_time_to_ms_just_nanos(): + duration = Duration() + duration.nanos = 900000000 + assert gcs_time_to_ms(duration) == 900 + +def test_gcs_time_to_ms_just_seconds(): + duration = Duration() + duration.seconds = 2 + assert gcs_time_to_ms(duration) == 2000 + +def test_gcs_time_to_ms_nanos_and_seconds(): + duration = Duration() + duration.nanos = 300000000 + duration.seconds = 5 + assert gcs_time_to_ms(duration) == 5300 def test_leading_zero_empty(): assert leading_zero('') == '' diff --git a/tests/utils/test_language.py b/tests/utils/test_language.py new file mode 100644 index 0000000..d9c171b --- /dev/null +++ b/tests/utils/test_language.py @@ -0,0 +1,44 @@ +# pylint: skip-file + +# Word lists: https://github.com/nathanmerrill/wordsbysyllables + +import os +from utils import num_syllables + +def get_words_file(num): + curr_dir = os.path.dirname(__file__) + path = os.path.join(curr_dir, '../data/{0}-syllable-words.txt').format(num) + with open(path, mode='r') as file: + return file.readlines() + +def validate_syllables(syllables): + correct = 0 + words = get_words_file(syllables) + for word in words: + if abs(num_syllables(word) - syllables) < 2: # 1 off is accurate enough + correct += 1 + assert correct/len(words) > .90 # 90% is good enough + +def test_num_syllables_empty(): + assert num_syllables('') == 0 + +def test_1_syallable(): + validate_syllables(1) + +def test_2_syallables(): + validate_syllables(2) + +def test_3_syallables(): + validate_syllables(3) + +def test_4_syallables(): + validate_syllables(4) + +def test_5_syallables(): + validate_syllables(5) + +def test_6_syallables(): + validate_syllables(6) + +def test_7_syallables(): + validate_syllables(7)