this won't scale -- there are too many word combinations, cannot store them all in memory.

the original C code solves this by pruning infrequent entries from memory from time to time (a hack).