I'm working on a software method to correct the verb in an English sentence based on the subject count (singular or plural) and using a corpus of verbs tagged with their Penn Treebank Tags. (I have method to inflect verbs based on this tag. see Lemminflect ).
While I've found a lot of good rules for determining if the subject is singular or plural, I'm having difficulty finding a good codified set of rules for transforming the verbs, based on their Penn Treebank Tags. It looks like forms of 'be' need to be handled differently. Here's what the rules look like to me so far..
Rules for standard verbs:
- Don't attempt to transform any verb that is of the form VB(base), VBD(past), VBN(past-part) or VBG(gerund). ie.. "He ran" and "They ran"
- Only transform VBZ (singular) and VBP (plural) forms of the verb, based on subject count.
Rules for forms of 'be'. Here the complication is that some Penn tags encompass multiple words. These are VBP:(am,are) and VBD:(was,were)
- Transform VBZ (singular) and VBP (plural) forms of the verb similar to above but with following exceptions..
- When the subject is "I" (ie.. "I am") always use "VBP/am" even though VBP is plural.
- VBD(past) verbs transform such as "He was" <--> "They were"
I'm guessing as I go through examples I'm going to find more rules and corner cases so any additions/corrections on the above would be appreciated.
If you know of any good references or open-source software packages (preferably python) please pass that along.