solved:CSPB3104 Programming Assignment 2(Dictionary lookup and autocomplete using Tries)

$30.00

Category: You will Instantly receive a download link for .zip solution file upon Payment || To Order Original Work Click Custom Order?

Description

5/5 - (1 vote)

Trie

A trie is a special rooted tree. that allows us to store a set of words by sharing their common prefixes.

Example # 1

Consider the following list of five words:

hello, jello, he, hello, jelly

The trie data structure for this list above is given below:

A trie node can be of three types:

  • Root of the trie (shown as a diamond)
  • Internal non-terminal node of a trie (white ovals)
  • Word-ending node of a trie (green ovals).

Note: A word-ending node need not be a leaf. Also, such nodes are associated with a number that represents the frequency of the corresponding word.

Each trie edge is labelled with an alphabet.

Reading the words in the dictionary.

Starting from the root (diamond node), as we traverse a path along the trie, the letters along a path form a word. Whenever we encounter a word-ending node, we can stop and read off a valid word in the dictionary.

For instance, we note the correspondence between the list of words:

hello, hello, jello, he, jelly

and the paths in the trie.

Note: The word he is a prefix of the word hello. Therefore, in the trie, starting from the root, we see that a word-ending node corresponding to he is extended by the suffix “llo” to form a word-ending node for hello.

The frequency of occurrence of a word is the number associated with its corresponding word-ending node. Notice how the frequency of “he” is 1 but the frequency of “hello” is 2.

Finally, two words with a common prefix such as “jelly” and “jello” will share a common path corresponding to the prefix “jell” in the trie.

Trie Data Structure: Specification

A trie (or a prefix tree) data structure allows us to store a set of strings from a dictionary along with a frequency count for each strings. The following operations should be supported:

Operation Description Return Type
addWord(w) Insert a word w into the trie None
lookupWord(w) Return the frequency of w in the trie (0 if not present) int
autoComplete(w) Return a list of words in the trie along with their frequencies so that w is a prefix of each word in the list list of (str,int)

Example : Adding Words to the Trie

We will illustrate the process of constructing a trie using an example.

At the beginning the empty trie is simply a root node:

Suppose we add the strings in the following order:

test, testament, testing, ping, pin, pink, pine, pint, testing, pinetree

Trie Operation
addWord(test)
addWord(testament)
addWord(testing)
addWord(ping)
addWord(pin) addWord(pink) addWord(pine) addWord(pint) addWord(testing) addWord(pinetree)

Example: Trie Lookup

The operation lookupWord allows us to count the frequency of a word in a trie. If a word does not belong to a trie, then the frequency is 0.

For instance, consider the trie above:

lookupWord('test’) = 1 lookupWord('testing’) = 2 lookupWord('tesla’) = 0 lookupWord('tom’) = 0 lookupWord('pinetree’) = 1

Example: Autocomplete

The operation autoComplete provides a list of completions of a given string along with their frequencies.

autoComplete('pi’) = [ ('pin’,1), ('pink’,1), ('pine’,1),('pinetree’,1),('pint’,1), ('ping’,1) ] autoComplete('tom’) = [ ] # emtpy list because no word with prefix tom belongs to the trie autoComplete('testi’) = [ ('testing’,2) ]

Implementation

Your job is to implement the operations addWord, lookupWord and autoComplete in the class MyTrieNode defined below.

import sys

# We will use a class called my trie node
class MyTrieNode:
    # Initialize some fields 
  
    def __init__(self, isRootNode):
        #The initialization below is just a suggestion.
        #Change it as you will.
        # But do not change the signature of the constructor.
        self.isRoot = isRootNode
        self.isWordEnd = False # is this node a word ending node
        self.isRoot = False # is this a root node
        self.count = 0 # frequency count
        self.next = {} # Dictionary mapping each character from a-z to 
                       # the child node if any corresponding to that character.


    def addWord(self,w):
        assert(len(w) > 0)

        # YOUR CODE HERE
        # If you want to create helper/auxiliary functions, please do so.
        
        return

    def lookupWord(self,w):
        # Return frequency of occurrence of the word w in the trie
        # returns a number for the frequency and 0 if the word w does not occur.

        # YOUR CODE HERE
        
        return 0 # TODO: change this line, please
    

    def autoComplete(self,w):
        #Returns possible list of autocompletions of the word w
        #Returns a list of pairs (s,j) denoting that
        #         word s occurs with frequency j

        #YOUR CODE HERE
        
        return [('Walter',1),('Mitty',2),('Went',3),('To',4),('Greenland',2)] #TODO: change this line, please

Description of MyTrieNode Class

A trie node structure has the following attributes/fields:

  • isRoot A Boolean flag denoting if the node is a root.
  • isWordEnd A Boolean flag denoting if the node is the word ending node.
  • count A count field for frequency count for a word ending node.
  • next: A dictionary that maps from each of the alphabets ‘a’ – ‘z’ to the child node corresponding to the alphabet.
# The original example: let us see if the code works

t= MyTrieNode(True) # Create a root Trie node
lst1=['test','testament','testing','ping','pin','pink','pine','pint','testing','pinetree']
# Insert the words in lst1
for w in lst1:
    t.addWord(w)
    
# Perform lookups
j = t.lookupWord('testy') # should return 0
j2 = t.lookupWord('telltale') # should return 0
j3 = t.lookupWord ('testing') # should return 2

# Run autocompletes
lst3 = t.autoComplete('pi')
print('Completions for \"pi\" are : ')
print(lst3)

lst4 = t.autoComplete('tes')
print('Completions for \"tes\" are : ')
print(lst4)
Completions for "pi" are : 
[('Walter', 1), ('Mitty', 2), ('Went', 3), ('To', 4), ('Greenland', 2)]
Completions for "tes" are : 
[('Walter', 1), ('Mitty', 2), ('Went', 3), ('To', 4), ('Greenland', 2)]

Testing Your Work : Do not Edit

We have coded up 5 tests that your code must pass.

import sys

def lookupTest(t, lstToLookup):
    retValue = True
    for (w,k) in lstToLookup:
        j = t.lookupWord(w)
        if (j != k):
            print('\t Lookup for word %s failed. Expected result: %d, obtained from your trie: %d \n'%(w,k,j))
            retValue = False
    return retValue

def autoCompleteTest(t, stem, expResult):
    lst1 = sorted(t.autoComplete(stem))
    lstRet = sorted(expResult)
    if (len(lst1) != len(lstRet)):
        print('\t autoComplete(\"%s\") failed'%(stem))
        print('\t\t Expected: ',lstRet)
        print('\t\t Got: ', lst1)
        return False
    n = len(lstRet)
    for i in range(0,n):
        (expI,freqI) = lstRet[i]
        (gotI,freqJ) = lst1[i]
        if (expI != gotI or freqI != freqJ):
            print('autoComplete(\"%s\") failed'%(stem))
            print('\t Expected: ',lstRet)
            print('\t Got: ', lst1 )
            return False   
    return True

def runTest(specs):
    try:
        t = MyTrieNode(True)
        lNum = 0
        result = True
        spec_lines = specs.split('\n')
        for line in spec_lines:
            lNum += 1
            lst = [x.strip() for x in line.split(',')]
            if (lst[0] == 'W'):
                print('\t Insert:',lst[1])
                t.addWord(lst[1])
            elif (lst[0] == 'L'):
                print('\t Lookup:', lst[1])
                j = t.lookupWord(lst[1])
                if (j != int(lst[2])):
                    print('\t\t Failed --> expected : %s, got %d'%(lst[2],j))
                    result=False
            elif (lst[0] == 'A'):
                wrd = lst[1]
                rList = lst[2::]
                rWords = rList[0::2]
                print('\t Autocomplete: ',lst[1])
                rNums = [int(x) for x in rList[1::2] ]
                retList = sorted(zip (rWords,rNums))
                result = (autoCompleteTest(t,wrd, retList)) and result
            else:
                print('Error in test specification line number %d -- Unknown command spec %s'%(lNum,lst[0]))
                sys.exit(1)
        return result
    except IOError:
        print('Unable to open',fileName)

str_spec1='''W,hello
W,hello
W,he
W,jello
W,jelly
L,hello,2
L,hell,0
L,howdy,0
A,he,hello,2,he,1
A,je,jello,1,jelly,1'''

rslt = runTest(str_spec1)
if (rslt):
    print('Test 1 PASSED')
else:
    print('Test 1 FAILED')
	 Insert: hello
	 Insert: hello
	 Insert: he
	 Insert: jello
	 Insert: jelly
	 Lookup: hello
		 Failed --> expected : 2, got 0
	 Lookup: hell
	 Lookup: howdy
	 Autocomplete:  he
	 autoComplete("he") failed
		 Expected:  [('he', 1), ('hello', 2)]
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
	 Autocomplete:  je
	 autoComplete("je") failed
		 Expected:  [('jello', 1), ('jelly', 1)]
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
Test 1 FAILED
str_spec2 = '''W,hello
W,how
W,are
W,you
W,hell
L,howdy,0
W,howdy
W,arid
W,arachnid
L,orange,0
L,hello,1
L,hell,1
L,howdy,1
A,ho,howdy,1,how,1'''

rslt = runTest(str_spec2)
if (rslt):
    print('Test 2 PASSED')
else:
    print('Test 2 FAILED')
	 Insert: hello
	 Insert: how
	 Insert: are
	 Insert: you
	 Insert: hell
	 Lookup: howdy
	 Insert: howdy
	 Insert: arid
	 Insert: arachnid
	 Lookup: orange
	 Lookup: hello
		 Failed --> expected : 1, got 0
	 Lookup: hell
		 Failed --> expected : 1, got 0
	 Lookup: howdy
		 Failed --> expected : 1, got 0
	 Autocomplete:  ho
	 autoComplete("ho") failed
		 Expected:  [('how', 1), ('howdy', 1)]
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
Test 2 FAILED
str_spec3='''L,lolo,0
L,popo,0
W,cat
W,hat
W,mat
W,hatter
W,mad
W,maddening
W,catherine
A,cath,catherine,1'''

rslt = runTest(str_spec3)
if (rslt):
    print('Test 3 PASSED')
else:
    print('Test 3 FAILED')
	 Lookup: lolo
	 Lookup: popo
	 Insert: cat
	 Insert: hat
	 Insert: mat
	 Insert: hatter
	 Insert: mad
	 Insert: maddening
	 Insert: catherine
	 Autocomplete:  cath
	 autoComplete("cath") failed
		 Expected:  [('catherine', 1)]
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
Test 3 FAILED
str_spec4 = '''W,jelly
W,jello
W,just
W,justin
W,jejunum
W,jellyfish
L,jell,0
L,jel,0
L,jellyfish,1
L,justtin,0
L,jus,0
L,justin,1'''

rslt = runTest(str_spec4)
if (rslt):
    print('Test 4 PASSED')
else:
    print('Test 4 FAILED')

	 Insert: jelly
	 Insert: jello
	 Insert: just
	 Insert: justin
	 Insert: jejunum
	 Insert: jellyfish
	 Lookup: jell
	 Lookup: jel
	 Lookup: jellyfish
		 Failed --> expected : 1, got 0
	 Lookup: justtin
	 Lookup: jus
	 Lookup: justin
		 Failed --> expected : 1, got 0
Test 4 FAILED
str_spec5='''W,a
W,aah
W,aardvark
W,ab
L,abdomen,0
W,aback
W,abacus
W,abaft
W,abalone
W,abandon
W,abandonment
W,abase
W,abasement
W,abash
W,abashed
W,abashment
W,abate
W,abated
W,abatement
W,abattoir
W,abbe
W,abbess
W,abbey
W,abbot
W,abbr
W,abbrev
W,abbreviate
W,abbreviation
W,abdicate
W,abdication
W,abdomen
W,abdominal
W,abduct
W,abductee
W,abduction
W,abductor
W,abeam
W,aberrant
W,aberration
W,aberrational
W,abet
W,abetted
W,abetting
W,abettor
W,abeyance
W,abhor
W,abhorred
W,abhorrence
W,abhorrent
W,abhorring
W,abidance
W,abide
W,abiding
W,ability
W,abject
W,abjection
W,abjectness
W,abjuration
W,abjuratory
W,abjure
W,abjurer
W,ablate
W,ablation
W,ablative
W,ablaze
W,able
W,abler
W,abloom
W,ablution
W,abnegate
W,abnegation
W,abnormal
W,abnormality
W,aboard
W,abode
W,abolish
W,abolition
W,abolitionism
W,abolitionist
W,abominable
W,abominably
W,abominate
W,abomination
W,aboriginal
W,aborigine
W,aborning
W,abort
W,abortion
W,abortionist
W,abortive
W,abound
W,about
W,above
W,aboveboard
W,abracadabra
W,abrade
W,abrasion
W,abrasive
W,abrasiveness
W,abreast
W,abridge
W,abridgment
W,abroad
W,abrogate
W,abrogation
W,abrogator
W,abrupt
W,abruptness
W,abs
W,abscess
W,abscissa
W,abscission
W,abscond
W,absconder
W,abseil
W,absence
W,absent
W,absentee
W,absenteeism
W,absentminded
W,absentmindedness
W,absinthe
W,absolute
W,absoluteness
W,absolution
W,absolutism
W,absolutist
W,absolve
W,absorb
W,absorbency
W,absorbent
W,absorbing
W,absorption
W,absorptive
W,abstain
W,abstainer
W,abstemious
W,abstemiousness
W,abstention
W,abstinence
W,abstinent
W,abstract
W,abstracted
W,abstractedness
W,abstraction
W,abstractness
W,abstruse
W,abstruseness
W,absurd
W,absurdity
W,absurdness
W,abundance
W,abundant
W,abuse
W,abuse
W,abuser
W,abusive
W,abusiveness
W,abut
W,abutment
W,abutted
W,abutting
W,abuzz
W,abysmal
W,abyss
W,abyssal
W,ac
W,acacia
W,academe
W,academia
W,academic
W,academical
W,academician
W,academy
W,acanthus
W,accede
W,accelerate
W,acceleration
W,accelerator
W,accent
W,accented
W,accentual
W,accentuate
W,accentuation
W,accept
W,acceptability
W,acceptableness
W,acceptably
W,acceptance
W,acceptation
W,accepted
W,access
W,accessibility
W,accessible
W,accessibly
W,accession
W,accessorize
W,accessory
W,accident
W,accidental
W,acclaim
W,acclamation
W,acclimate
W,acclimation
W,acclimatization
W,acclimatize
W,acclivity
W,accolade
W,accommodate
W,accommodating
W,accommodation
W,accompanied
W,accompaniment
W,accompanist
W,accompany
W,accomplice
W,accomplish
W,accomplished
W,accomplishment
W,accord
W,accordance
W,accordant
W,according
W,accordion
W,accordionist
W,accost
W,account
W,accountability
W,accountable
W,accountancy
W,accountant
W,accounted
W,accounting
W,accouter
W,accouterments
W,accredit
W,accreditation
W,accredited
W,accretion
W,accrual
W,accrue
W,acct
W,acculturate
W,acculturation
W,accumulate
W,accumulation
W,accumulator
W,accuracy
W,accurate
W,accurateness
W,accursed
W,accursedness
W,accusation
W,accusative
W,accusatory
W,accuse
W,accuser
W,accusing
W,accustom
W,accustomed
W,ace
W,acerbate
W,acerbic
W,acerbically
W,acerbity
W,acetaminophen
W,acetate
W,acetic
W,acetone
W,acetonic
W,acetylene
W,ache
W,achene
W,achieve
W,achievement
W,achiever
W,aching
W,achoo
W,achromatic
W,achy
W,acid
W,acidic
W,acidify
W,acidity
W,acidosis
W,acidulous
W,acknowledge
W,acknowledged
W,acknowledgment
W,acme
W,acne
W,acolyte
W,aconite
W,acorn
W,acoustic
W,acoustical
W,acoustics
W,acquaint
W,acquaintance
W,acquaintanceship
W,acquainted
W,acquiesce
W,acquiescence
W,acquiescent
W,acquire
W,acquirement
W,acquisition
W,acquisitive
W,acquisitiveness
W,acquit
W,acquittal
W,acquitted
W,acquitting
W,acre
W,acreage
W,acrid
W,acridity
W,acridness
W,acrimonious
W,acrimoniousness
W,acrimony
W,acrobat
W,acrobatic
W,acrobatically
W,acrobatics
W,acronym
W,acrophobia
W,acropolis
W,across
W,acrostic
W,acrylic
W,act
W,act
W,acting
W,actinium
W,action
W,actionable
W,activate
W,activation
W,activator
W,active
W,active
W,activeness
W,actives
W,activism
W,activist
W,activities
W,activity
W,actor
W,actress
W,actual
W,actuality
W,actualization
W,actualize
W,actuarial
W,actuary
W,actuate
W,actuation
W,actuator
W,acuity
W,acumen
W,acupressure
W,acupuncture
W,acupuncturist
W,acute
W,acuteness
W,acyclovir
W,ad
W,adage
W,adagio
W,adamant
W,adapt
W,adaptability
W,adaptation
W,adapter
W,adaption
W,add
W,addend
W,addenda
W,addendum
W,adder
W,addict
W,addiction
W,addition
W,additional
W,additive
W,addle
W,address
W,address
W,addressable
W,addressed
W,addressee
W,adduce
W,adenine
W,adenoid
W,adenoidal
W,adept
W,adeptness
W,adequacy
W,adequate
W,adequateness
W,adhere
W,adherence
W,adherent
W,adhesion
W,adhesive
W,adhesiveness
W,adiabatic
W,adieu
W,adios
W,adipose
W,adj
W,adjacency
W,adjacent
W,adjectival
W,adjective
W,adjoin
W,adjourn
W,adjournment
W,adjudge
W,adjudicate
W,adjudication
W,adjudicator
W,adjudicatory
W,adjunct
W,adjuration
W,adjure
W,adjust
W,adjustable
W,adjuster
W,adjustment
W,adjutant
W,adman
W,admen
W,admin
W,administer
W,administrate
W,administration
W,administrative
W,administrator
W,admirably
W,admiral
W,admiralty
W,admiration
W,admire
W,admirer
W,admiring
W,admissibility
W,admissible
W,admissibly
W,admission
W,admissions
W,admit
W,admittance
W,admitted
W,admitting
W,admix
W,admixture
W,admonish
W,admonishment
W,admonition
W,admonitory
L,ado,0
W,ado
L,ado,1
W,adobe
L,adobe,1
W,adolescence
W,adolescent
W,adopt
W,adoptable
W,adopter
W,adoption
W,adorableness
W,adorably
W,adoration
W,adore
W,adorer
W,adoring
W,adorn
L,ado,1
L,adorn,1
W,adorned
W,adornment
L,abdominal,1
A,abc
A,abet,abet,1,abetted,1,abetting,1,abettor,1'''

rslt = runTest(str_spec5)
if (rslt):
    print('Test 5 PASSED')
else:
    print('Test 5 FAILED')
	 Insert: a
	 Insert: aah
	 Insert: aardvark
	 Insert: ab
	 Lookup: abdomen
	 Insert: aback
	 Insert: abacus
	 Insert: abaft
	 Insert: abalone
	 Insert: abandon
	 Insert: abandonment
	 Insert: abase
	 Insert: abasement
	 Insert: abash
	 Insert: abashed
	 Insert: abashment
	 Insert: abate
	 Insert: abated
	 Insert: abatement
	 Insert: abattoir
	 Insert: abbe
	 Insert: abbess
	 Insert: abbey
	 Insert: abbot
	 Insert: abbr
	 Insert: abbrev
	 Insert: abbreviate
	 Insert: abbreviation
	 Insert: abdicate
	 Insert: abdication
	 Insert: abdomen
	 Insert: abdominal
	 Insert: abduct
	 Insert: abductee
	 Insert: abduction
	 Insert: abductor
	 Insert: abeam
	 Insert: aberrant
	 Insert: aberration
	 Insert: aberrational
	 Insert: abet
	 Insert: abetted
	 Insert: abetting
	 Insert: abettor
	 Insert: abeyance
	 Insert: abhor
	 Insert: abhorred
	 Insert: abhorrence
	 Insert: abhorrent
	 Insert: abhorring
	 Insert: abidance
	 Insert: abide
	 Insert: abiding
	 Insert: ability
	 Insert: abject
	 Insert: abjection
	 Insert: abjectness
	 Insert: abjuration
	 Insert: abjuratory
	 Insert: abjure
	 Insert: abjurer
	 Insert: ablate
	 Insert: ablation
	 Insert: ablative
	 Insert: ablaze
	 Insert: able
	 Insert: abler
	 Insert: abloom
	 Insert: ablution
	 Insert: abnegate
	 Insert: abnegation
	 Insert: abnormal
	 Insert: abnormality
	 Insert: aboard
	 Insert: abode
	 Insert: abolish
	 Insert: abolition
	 Insert: abolitionism
	 Insert: abolitionist
	 Insert: abominable
	 Insert: abominably
	 Insert: abominate
	 Insert: abomination
	 Insert: aboriginal
	 Insert: aborigine
	 Insert: aborning
	 Insert: abort
	 Insert: abortion
	 Insert: abortionist
	 Insert: abortive
	 Insert: abound
	 Insert: about
	 Insert: above
	 Insert: aboveboard
	 Insert: abracadabra
	 Insert: abrade
	 Insert: abrasion
	 Insert: abrasive
	 Insert: abrasiveness
	 Insert: abreast
	 Insert: abridge
	 Insert: abridgment
	 Insert: abroad
	 Insert: abrogate
	 Insert: abrogation
	 Insert: abrogator
	 Insert: abrupt
	 Insert: abruptness
	 Insert: abs
	 Insert: abscess
	 Insert: abscissa
	 Insert: abscission
	 Insert: abscond
	 Insert: absconder
	 Insert: abseil
	 Insert: absence
	 Insert: absent
	 Insert: absentee
	 Insert: absenteeism
	 Insert: absentminded
	 Insert: absentmindedness
	 Insert: absinthe
	 Insert: absolute
	 Insert: absoluteness
	 Insert: absolution
	 Insert: absolutism
	 Insert: absolutist
	 Insert: absolve
	 Insert: absorb
	 Insert: absorbency
	 Insert: absorbent
	 Insert: absorbing
	 Insert: absorption
	 Insert: absorptive
	 Insert: abstain
	 Insert: abstainer
	 Insert: abstemious
	 Insert: abstemiousness
	 Insert: abstention
	 Insert: abstinence
	 Insert: abstinent
	 Insert: abstract
	 Insert: abstracted
	 Insert: abstractedness
	 Insert: abstraction
	 Insert: abstractness
	 Insert: abstruse
	 Insert: abstruseness
	 Insert: absurd
	 Insert: absurdity
	 Insert: absurdness
	 Insert: abundance
	 Insert: abundant
	 Insert: abuse
	 Insert: abuse
	 Insert: abuser
	 Insert: abusive
	 Insert: abusiveness
	 Insert: abut
	 Insert: abutment
	 Insert: abutted
	 Insert: abutting
	 Insert: abuzz
	 Insert: abysmal
	 Insert: abyss
	 Insert: abyssal
	 Insert: ac
	 Insert: acacia
	 Insert: academe
	 Insert: academia
	 Insert: academic
	 Insert: academical
	 Insert: academician
	 Insert: academy
	 Insert: acanthus
	 Insert: accede
	 Insert: accelerate
	 Insert: acceleration
	 Insert: accelerator
	 Insert: accent
	 Insert: accented
	 Insert: accentual
	 Insert: accentuate
	 Insert: accentuation
	 Insert: accept
	 Insert: acceptability
	 Insert: acceptableness
	 Insert: acceptably
	 Insert: acceptance
	 Insert: acceptation
	 Insert: accepted
	 Insert: access
	 Insert: accessibility
	 Insert: accessible
	 Insert: accessibly
	 Insert: accession
	 Insert: accessorize
	 Insert: accessory
	 Insert: accident
	 Insert: accidental
	 Insert: acclaim
	 Insert: acclamation
	 Insert: acclimate
	 Insert: acclimation
	 Insert: acclimatization
	 Insert: acclimatize
	 Insert: acclivity
	 Insert: accolade
	 Insert: accommodate
	 Insert: accommodating
	 Insert: accommodation
	 Insert: accompanied
	 Insert: accompaniment
	 Insert: accompanist
	 Insert: accompany
	 Insert: accomplice
	 Insert: accomplish
	 Insert: accomplished
	 Insert: accomplishment
	 Insert: accord
	 Insert: accordance
	 Insert: accordant
	 Insert: according
	 Insert: accordion
	 Insert: accordionist
	 Insert: accost
	 Insert: account
	 Insert: accountability
	 Insert: accountable
	 Insert: accountancy
	 Insert: accountant
	 Insert: accounted
	 Insert: accounting
	 Insert: accouter
	 Insert: accouterments
	 Insert: accredit
	 Insert: accreditation
	 Insert: accredited
	 Insert: accretion
	 Insert: accrual
	 Insert: accrue
	 Insert: acct
	 Insert: acculturate
	 Insert: acculturation
	 Insert: accumulate
	 Insert: accumulation
	 Insert: accumulator
	 Insert: accuracy
	 Insert: accurate
	 Insert: accurateness
	 Insert: accursed
	 Insert: accursedness
	 Insert: accusation
	 Insert: accusative
	 Insert: accusatory
	 Insert: accuse
	 Insert: accuser
	 Insert: accusing
	 Insert: accustom
	 Insert: accustomed
	 Insert: ace
	 Insert: acerbate
	 Insert: acerbic
	 Insert: acerbically
	 Insert: acerbity
	 Insert: acetaminophen
	 Insert: acetate
	 Insert: acetic
	 Insert: acetone
	 Insert: acetonic
	 Insert: acetylene
	 Insert: ache
	 Insert: achene
	 Insert: achieve
	 Insert: achievement
	 Insert: achiever
	 Insert: aching
	 Insert: achoo
	 Insert: achromatic
	 Insert: achy
	 Insert: acid
	 Insert: acidic
	 Insert: acidify
	 Insert: acidity
	 Insert: acidosis
	 Insert: acidulous
	 Insert: acknowledge
	 Insert: acknowledged
	 Insert: acknowledgment
	 Insert: acme
	 Insert: acne
	 Insert: acolyte
	 Insert: aconite
	 Insert: acorn
	 Insert: acoustic
	 Insert: acoustical
	 Insert: acoustics
	 Insert: acquaint
	 Insert: acquaintance
	 Insert: acquaintanceship
	 Insert: acquainted
	 Insert: acquiesce
	 Insert: acquiescence
	 Insert: acquiescent
	 Insert: acquire
	 Insert: acquirement
	 Insert: acquisition
	 Insert: acquisitive
	 Insert: acquisitiveness
	 Insert: acquit
	 Insert: acquittal
	 Insert: acquitted
	 Insert: acquitting
	 Insert: acre
	 Insert: acreage
	 Insert: acrid
	 Insert: acridity
	 Insert: acridness
	 Insert: acrimonious
	 Insert: acrimoniousness
	 Insert: acrimony
	 Insert: acrobat
	 Insert: acrobatic
	 Insert: acrobatically
	 Insert: acrobatics
	 Insert: acronym
	 Insert: acrophobia
	 Insert: acropolis
	 Insert: across
	 Insert: acrostic
	 Insert: acrylic
	 Insert: act
	 Insert: act
	 Insert: acting
	 Insert: actinium
	 Insert: action
	 Insert: actionable
	 Insert: activate
	 Insert: activation
	 Insert: activator
	 Insert: active
	 Insert: active
	 Insert: activeness
	 Insert: actives
	 Insert: activism
	 Insert: activist
	 Insert: activities
	 Insert: activity
	 Insert: actor
	 Insert: actress
	 Insert: actual
	 Insert: actuality
	 Insert: actualization
	 Insert: actualize
	 Insert: actuarial
	 Insert: actuary
	 Insert: actuate
	 Insert: actuation
	 Insert: actuator
	 Insert: acuity
	 Insert: acumen
	 Insert: acupressure
	 Insert: acupuncture
	 Insert: acupuncturist
	 Insert: acute
	 Insert: acuteness
	 Insert: acyclovir
	 Insert: ad
	 Insert: adage
	 Insert: adagio
	 Insert: adamant
	 Insert: adapt
	 Insert: adaptability
	 Insert: adaptation
	 Insert: adapter
	 Insert: adaption
	 Insert: add
	 Insert: addend
	 Insert: addenda
	 Insert: addendum
	 Insert: adder
	 Insert: addict
	 Insert: addiction
	 Insert: addition
	 Insert: additional
	 Insert: additive
	 Insert: addle
	 Insert: address
	 Insert: address
	 Insert: addressable
	 Insert: addressed
	 Insert: addressee
	 Insert: adduce
	 Insert: adenine
	 Insert: adenoid
	 Insert: adenoidal
	 Insert: adept
	 Insert: adeptness
	 Insert: adequacy
	 Insert: adequate
	 Insert: adequateness
	 Insert: adhere
	 Insert: adherence
	 Insert: adherent
	 Insert: adhesion
	 Insert: adhesive
	 Insert: adhesiveness
	 Insert: adiabatic
	 Insert: adieu
	 Insert: adios
	 Insert: adipose
	 Insert: adj
	 Insert: adjacency
	 Insert: adjacent
	 Insert: adjectival
	 Insert: adjective
	 Insert: adjoin
	 Insert: adjourn
	 Insert: adjournment
	 Insert: adjudge
	 Insert: adjudicate
	 Insert: adjudication
	 Insert: adjudicator
	 Insert: adjudicatory
	 Insert: adjunct
	 Insert: adjuration
	 Insert: adjure
	 Insert: adjust
	 Insert: adjustable
	 Insert: adjuster
	 Insert: adjustment
	 Insert: adjutant
	 Insert: adman
	 Insert: admen
	 Insert: admin
	 Insert: administer
	 Insert: administrate
	 Insert: administration
	 Insert: administrative
	 Insert: administrator
	 Insert: admirably
	 Insert: admiral
	 Insert: admiralty
	 Insert: admiration
	 Insert: admire
	 Insert: admirer
	 Insert: admiring
	 Insert: admissibility
	 Insert: admissible
	 Insert: admissibly
	 Insert: admission
	 Insert: admissions
	 Insert: admit
	 Insert: admittance
	 Insert: admitted
	 Insert: admitting
	 Insert: admix
	 Insert: admixture
	 Insert: admonish
	 Insert: admonishment
	 Insert: admonition
	 Insert: admonitory
	 Lookup: ado
	 Insert: ado
	 Lookup: ado
		 Failed --> expected : 1, got 0
	 Insert: adobe
	 Lookup: adobe
		 Failed --> expected : 1, got 0
	 Insert: adolescence
	 Insert: adolescent
	 Insert: adopt
	 Insert: adoptable
	 Insert: adopter
	 Insert: adoption
	 Insert: adorableness
	 Insert: adorably
	 Insert: adoration
	 Insert: adore
	 Insert: adorer
	 Insert: adoring
	 Insert: adorn
	 Lookup: ado
		 Failed --> expected : 1, got 0
	 Lookup: adorn
		 Failed --> expected : 1, got 0
	 Insert: adorned
	 Insert: adornment
	 Lookup: abdominal
		 Failed --> expected : 1, got 0
	 Autocomplete:  abc
	 autoComplete("abc") failed
		 Expected:  []
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
	 Autocomplete:  abet
	 autoComplete("abet") failed
		 Expected:  [('abet', 1), ('abetted', 1), ('abetting', 1), ('abettor', 1)]
		 Got:  [('Greenland', 2), ('Mitty', 2), ('To', 4), ('Walter', 1), ('Went', 3)]
Test 5 FAILED