I try to construct a classic querying system where I find the most probable candidate text for a query by computing cosine similarities of TFIDF vectors of normalized text of possible answers. This works quite well if the query and the candidate texts contain identical (normalized) words. So, the following question:
When was the King of England assassinated?
my system correctly finds the following closest answer from the corpus:
The King of England was assassinated in 1234.
So far, so good. My problem is that I want to find this answer in the case of questions with the same meaning but slightly different synonym wording, like:
When was the British Monarch killed?
How could I compute similarity taking semantic distance into account? Shall I use word2vec representation instead of TFIDF?