NLP | Correcting verb forms

Let`s look at this with an example:

  1. Is our child exercising enough?
  2. Is our child being trained enough?

The verb “is” can only be used with singular nouns. For plural nouns, we use “is”. This problem is very common in the real world, and we can fix it by creating corrective verbs that are used depending on whether the fragment contains a plural or singular noun.

Code # 1: Defining verb correction mappings

# singular to plural

 

plural_verb_forms = {

  ( ` is ` , ` VBZ` ): ( `are` , ` VBP` ) ,

( `was` , `VBD` ): ( `were` , ` VBD` )

}

 
# singular plural

singular_verb_forms = {

  ( `are` , ` VBP` ): ( `is` , ` VBZ` ),

  ( ` were` , `VBD` ): ( ` was` , `VBD` )

  }

We look for the position of the first tagged word in the chunk using the first_chunk_index () method. This method has a parameter & # 39; pred & # 39; which takes a tuple (word, tag) and returns True or False.

Code # 2: first_chunk_index ()

The predicate function in the code below returns True if the tag in the (word, tag) argument starts with the given tag prefix. The rest is false.

Code # 3:

def first_chunk_index (chunk, pred, start = 0 , step = 1 ):

 

l = len (chunk)

end = l if step & gt;  0 else - 1

 

for i in range (start, end, step):

if pred (chunk [i]):

return i

 

return None

def tag_startswith (prefix):

  def f (wt):

  return wt [ 1 ]. startswith (prefix)

return f

Code # 4: Let`s fix the verb forms

from transforms import corre ct_verbs

 

print ( " Corrected verb forms: "

correct_verbs ([( `is` , `VBZ` ), ( ` our` , `PRP $` ), 

( `children` , `NNS` ), ( ` learning` , `VBG` )]))

Output:

 Corrected verb forms: [(` are`, `VBP`), (` our`, `PRP $`), (`children`,` NNS`), (`learning`,` VBG`)]