9

When I write fiction, or even technical reports, I have a very difficult time catching myself unintentionally switching verb tenses. Does software exist that highlights verb tense (either by colour-coding them or something) to identify verb tense mistakes?

Cyn
  • 32,483
  • 6
  • 77
  • 145
Seanny123
  • 865
  • 2
  • 9
  • 21

7 Answers7

4

One inelegant way to do this:

  1. download https://nlp.stanford.edu/software/lex-parser.shtml
  2. run on your text (lexparser.sh yourtextfile.txt)
  3. split by tense. "VBD", "VBN" is past tense, "VBP", "VBZ","VBG" are present tense, "VBC", "VBF" future tense
serv-inc
  • 141
  • 4
2

Grammarly - It is web based, but also has browser and Word plugins. It will check all manner of grammar errors

NKCampbell
  • 293
  • 1
  • 14
2

Hemingway - Free web-version, paid download version. Identify clunky sentences, passive voice, unnecessary words. I think tense changes are included in the 'clunky' setting and passive voice is often an indicator of changing tense as well. Exports to HTML, Markdown, and Word.

zga
  • 126
  • 4
2

AutoCrit has this feature. I've used Grammarly and it does not, but AutoCrit looks at tense changes and highlights each verb with color codes to make it clear where you change tense. Also point of view. Allows statistical comparisons with other fiction writers in your genre.

Mark Owen
  • 21
  • 1
1

It's taking a sledgehammer to a nut, but the natural language toolkit could do it if your Python's decent.

J.G.
  • 9,577
  • 1
  • 25
  • 45
1

This code was useful to me.

from nltk import word_tokenize, pos_tag

def determine_tense_input(sentence): text = word_tokenize(sentence) tagged = pos_tag(text)

tense = {}
tense["future"] = len([word for word in tagged if word[1] == "MD"])
tense["present"] = len([word for word in tagged if word[1] in ["VBP", "VBZ","VBG"]])
tense["past"] = len([word for word in tagged if word[1] in ["VBD", "VBN"]]) 
return(tense)

My final version looks like this:

text = word_tokenize(sentence)
tagged = pos_tag(text)
universal_tag = pos_tag(text, tagset='universal')
presents = [word for word in tagged if word[1] in ["VBP", "VBZ","VBG"]]

for i, x in enumerate(tagged[:]): if x[1] in ["VBP", "VBZ","VBG"] and universal_tag[i][1] in ["VERB"] and x[0] not in ["etc","[","]"]: present_verbs.append(universal_tag[i][0])

present_verbs = [" " + x for x in set(present_verbs)] print(" \n".join(present_verbs))

Seanny123
  • 865
  • 2
  • 9
  • 21
BND
  • 159
  • 5
0

Pro Writing Aid is great for checking nearly anything in your writing - just pick your analysis type. It's free to run it on up to 1,000 words at a time, so give a try.

Grammarly may work, but it's analysis isn't nearly as in-depth.

Kitsune
  • 984
  • 4
  • 8