Python: puntuación de similitud semántica para cadenas

¿Hay bibliotecas para calcular puntuaciones de similitud semántica para un par de oraciones?

Soy consciente de la base de datos semántica de WordNet y de cómo puedo generar el puntaje para 2 palabras, pero estoy buscando bibliotecas que realicen todas las tareas de preprocesamiento, como la recostackción de puertos, la eliminación de palabras, etc., en oraciones completas y resultados una puntuación de cómo están relacionadas las dos oraciones.

Encontré un trabajo en progreso que está escrito utilizando el marco .NET que calcula la puntuación utilizando una serie de pasos de preprocesamiento. ¿Hay algún proyecto que haga esto en python?

No estoy buscando la secuencia de operaciones que me ayude a encontrar la puntuación (como se solicita aquí )
Me encantaría implementar cada etapa por mi cuenta, o pegar funciones de diferentes bibliotecas para que funcione con pares de oraciones, pero necesito esto principalmente como una herramienta para probar inferencias en los datos.


EDITAR: Estaba considerando usar NLTK y calcular la puntuación para cada par de palabras iteradas en las dos oraciones, y luego hacer inferencias a partir de la desviación estándar de los resultados, pero no sé si esa es una estimación legítima de la similitud. Además, tomará mucho tiempo para cuerdas largas.
Nuevamente, estoy buscando proyectos / bibliotecas que ya implementen esto inteligentemente. Algo que me permite hacer esto:

import amazing_semsim_package str1='Birthday party ruined as cake explodes' str2='Grandma mistakenly bakes cake using gunpowder' >>similarity(str1,str2) >>0.889 

El mejor paquete que he visto para esto es Gensim, que se encuentra en la página de inicio de Gensim . Lo he usado muchas veces y, en general, estoy muy contento con su facilidad de uso; está escrito en Python y tiene un tutorial fácil de seguir para comenzar, que compara 9 cadenas. Se puede instalar a través de pip, por lo que no tendrá muchos problemas para instalarlo, espero.

El algoritmo de puntuación que utilice depende en gran medida del contexto de su problema, pero sugeriría comenzar con la funcionalidad LSI si quiere algo básico. (Eso es lo que te guía por el tutorial.)

Si sigue el tutorial para gensim, lo guiará a través de la comparación de dos cadenas, utilizando la función de Similitudes. Esto le permitirá ver cómo se comparan sus picaduras entre sí, o con alguna otra picadura, sobre la base del texto que contienen.

Si está interesado en la ciencia detrás de cómo funciona, consulte este documento.

Desafortunadamente, no puedo ayudarlo con PY, pero puede echar un vistazo a mi antiguo proyecto que utiliza diccionarios para llevar a cabo las comparaciones semánticas entre las oraciones (que luego se pueden codificar en PY implementando el análisis del espacio vectorial). Deben ser solo unas horas de encoding para traducir de JAVA a PY. https://sourceforge.net/projects/semantics/

AFAIK el NLP-Lib más poderoso para Python es http://nltk.org/