2016-07-06

Neural spelling corrector

My spelling corrector, which uses a neural network as the underlying algorithm, miscorrects four of the 49,168 words in the dictionary. The thing about this neural net is it is constructed logically rather than from a massive learning set. As an acceptance test, I have it validate that every word in the dictionary corrects to itself. (The “training” of the neural net takes about 100 ms - that is, the time to load the dictionary and make the connections.)

(Try it here: http://ec2-54-221-105-181.compute-1.amazonaws.com/?word=kayler ; put in your own word instead of “kayler”. )
Below are the only errors it makes in my test set of 49,000 words. These words look identical to the neural network. Luckily this is uncommon!

_intended_
_indented_

_unintended_
_unindented_


Benchmarking is fun:
On a Raspberry Pi 3 using just one core, the time to validate the dictionary is 1h 1m 38s. With all four cores running, the time is 17m 26s (not quite a 4x speedup but close).
On an AWS X1.32xlarge instance using just one core, the time to validate is 7m 6s. A single core on the AWS machine beats the Raspberry Pi’s four cores.
With all 128 cores running, the time is 14s. An X1.32xlarge rents for (in late 2018) about $13 / hour.
Raspberry Pi3 single core: 1 hour and a minute. X1.32xlarge at AWS with 128 cores: 14s.

No comments:

Post a Comment