Isso depende principalmente de quanto "state-of-the-art" (SOTA) você deseja versus a profundidade que deseja ir (trocadilho intencional ...).
Se você pode conviver apenas com combinações de palavras rasas, conforme fornecido por word2vec, Glove ou fastText, acho que a Distância do motor de palavras (WMD [yes, really ...]) é uma boa função para medir distâncias (curtas) de documentos [1] . Eu já vi vários Python Notebooks no passado que fornecem "tutoriais" para essa medida de distância, então é realmente fácil seguir em frente.
No entanto, se você estiver mais interessado em SOTA, terá que analisar um aprendizado profundo (representação de sequência), usando algum tipo de rede recorrente que aprenda um modelo de tópico de suas frases. Além de integrar incorporações (semânticas) de palavras, essas abordagens vão além da abordagem [boa e antiga] do "saco de palavras", aprendendo representações de tópicos usando as dependênciasdas palavras na frase [s]. Por exemplo, o SLRTM (Modelo de Tópico Recorrente no Nível da Sentença) é um modelo recorrente profundo e bastante interessante, baseado nas idéias da LDA mais tradicional (de Blei et al.) Ou LSA (Landauer et al.), Mas é apenas um arXiv documento (para que todos os avisos padrão "leve este grão com sal" sobre pesquisas não revisadas por pares sejam aplicáveis ...) [2]. Não obstante, o artigo possui muitos excelentes indicadores e referências para iniciar sua pesquisa, caso você queira ir a essa toca de coelho.
Por fim, deve ser esclarecido que não afirmo que esses sejam os métodos de melhor desempenho acordados para modelos de sequência de palavras e sequência, respectivamente. Mas eles devem te aproximar do "melhor" SOTA e, pelo menos, servir como um excelente ponto de partida.
[1] Matt J. Kusner et al. De incorporação de palavras a distâncias de documentos. Anais da 32ª Conferência Internacional sobre Aprendizado de Máquina, JMLR, 2015.
[2] Fei Tian et al. SLRTM: Deixar os tópicos falarem por si mesmos. arXiv 1604.02038, 2016.