I also tried writing an AI for Codenames a couple of years ago, with the help from some friends.
Interestingly, we also found out the hard way that the word "round" aren't used in the same contexts as things that actually are round, so our AI also struggled to connect "round" with words like "Jupiter" or even "Sphere". I'm not sure how to fix that, but maybe knowledge graphs could help?<p>But I also thought it was surprising how well it worked most of the time! It wasn't quite as good as a human spymaster, but with the right choice of scoring function we could actually get a model based on word embeddings to play a pretty reasonable game of Codenames.<p><a href="https://github.com/Gullesnuffs/Codenames" rel="nofollow">https://github.com/Gullesnuffs/Codenames</a>