Matching with a scrambled dictionary is a good idea, it would make questions like #7 very easy. I would then additionally suggest giving preference to words whose first and last letters match, because “asumse” can be “assume” or “amuses”.
If the sky is the sea, what does that make birds?
I would personally look up the relation between “bird” and “sky” (you could use ConceptNet) and apply that same relation to “sea”. e.g. ConceptNet lists the relation “bird AtLocation sky”, so “X AtLocation sea” = fish/dolphins/water. It would then take additional lookups to discern that “fish” are more similar to birds than “water” because they are both main species of animals for instance. This would be more cumbersome to look up in my own database structure, but possible.
However, the high-tech modern approach would use Word Vectors, which can fairly immediately tell you that sky is to birds as sea is to fish, merely because both are frequently described with similar words in similar phrases. The tech behind it is basically a word count.