How to improve the accuracy of automatic conflict resolution? A little background information from my previous question:https://english.stackexchange.com/questions/318528/conflict-resolution-how-to-decide-if-two-words-are-generally-unmistakable

When a court reporter strokes 2 different words with the same keys, this creates a conflict. Normally, the reporter will fix the error later, but sometimes there is a way for the court reporting software to fix the error for you. This can be referred to as automatic conflict resolution.

My court reporting software's system for accomplishing this is by recording the parts-of-speech before and after the conflicting words.

So for example, if my two conflicting words are Tallahassee and shake and I type the following sentences it will look something like this:

I eat at Tallahassee / shake all the time. (Prep - Determiner)

I eat a Tallahassee / shake all the time. (Article - Determiner)

At first it will make me choose between the two, but after I chose it will then automatically add its defined part of speech in a database, so that if I type something like this...

I eat in Tallahassee every afternoon. (Prep - Determiner)

my computer should correctly pick "Tallahassee" since I already told it that "Tallahassee" occurs after a Prep and before a Determiner. The rule for this is simply pos word pos

I tested the practicality of this conflict-resolution system with 79 random conflicts using parts of ANC's pos-tagged corpus and Excel VBA.


As the data shows, only 10 out of the 79 conflicts showed up with 0 collisions total. This means that in the entirety of the corpus, none of these conflicts had conflicting parts-of-speech which had caused an error. 
36/79 conflicts showed up with 5 or less collisions.
32/79 had 10 or more collisions
Each collision represents 1 guaranteed error of real-time translation given the pos word pos rule (per the parsed text from ANC, which was about 4.5 million words long)


These results aren't very good for the kind of real-time accuracy I hope to achieve.  It would be much better if I could get at least 30/79 (as opposed to only 10) to have 0 "guaranteed errors."



How can I improve this system so that I will have fewer real-time translation errors? 

My best thought is to change the rule from pos word pos to pos pos word pos in the case of a collision, but that's all I've got. I'm not very experienced on this subject, so I'm not necessarily opposed to the idea of starting over with something fresh.
There are many candidate approaches you could consider.  I would suggest you be creative about what features you could use, to make predictions about which candidate is more likely to be the intended one.



One approach is to use a language model for the prevalence of different phrases.  For instance, if $w, x$ are two words, define

$$r(x | w) = {P(w \; x) \over P(w) \times P(x)}.$$

(Here $P(w \; x)$ represents the prevalence of the 2-gram $w \; x$ in some large corpus, and $P(w)$ represents the prevalence of the 1-gram $w$ in the corpus.)

Now if the previous word is $w$ and the next word is either $x$ or $y$, compare $r(x | w)$ to $r(y | w)$ to see which is larger, and use that to resolve the conflict.

For example, comparing $r(\text{Tallahassee} | \text{at})$ to $r(\text{shake} | \text{at})$ using the Google n-gram viewer, we find that the former is much larger.  In particular, the former is $1.2 \times 10^{-6}/(0.3 \times 8.5 \times 10^{-5}) \approx 0.05$, while the latter is $4.8 \times 10^{-8}/(0.3 \times 9.7 \times 10^{-4}) \approx 10^{-4}$, which is much smaller.  We conclude that "Tallahassee" is much more likely to follow "at" than "shake", so the conflict should be resolved by the former.

You can generalize this to use any number of tokens of previous history (e.g., the previous 2 words instead of the previous 1 word).



Another approach would be to use something similar, but replace words with their parts of speech.

For instance, Google's n-gram viewer supports part-of-speech queries.  You can quickly see that "ADP Tallahassee" (basically, a preposition followed by Tallahassee) is more common than "ADP shake", so "I eat at" is more likely to be followed by "Tallahassee" than "shake".  In contrast, you can see that "DET shake" is more common than "DET Tallahassee"; so "a" (an article) is more likely be to be followed by "shake".