python semantics wordnet similarity

Python: puntaje de similitud semántica para Strings



semantics wordnet (3)

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

Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna biblioteca para calcular puntajes de similitud semántica para un par de oraciones?

Soy consciente de la base de datos semánticos de WordNet y de cómo puedo generar el puntaje de 2 palabras, pero estoy buscando bibliotecas que realicen todas las tareas de preprocesamiento como port-stemming, stop word removal, etc., en oraciones completas y salidas un puntaje de cuán relacionadas están las dos oraciones.

Encontré un work en progreso que está escrito usando .NET Framework que calcula el puntaje usando una serie de pasos de preprocesamiento. ¿Hay algún proyecto que haga esto en Python?

No estoy buscando la secuencia de operaciones que me ayudaría a encontrar el puntaje (como se solicita here )
Me encantaría implementar cada etapa por mi cuenta, o pegar funciones de diferentes bibliotecas para que funcione para pares de oraciones, pero lo necesito principalmente como una herramienta para probar inferencias sobre datos.

EDITAR: Estaba considerando usar NLTK y calcular el puntaje para cada par de palabras iteradas sobre las dos oraciones, y luego sacar inferencias de la desviación estándar de los resultados, pero no sé si esa es una estimación legítima de similitud. Además, tomará MUCHO tiempo para cadenas largas.
De nuevo, estoy buscando proyectos / bibliotecas que ya implementen esto de manera inteligente. 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 he estado muy contento con su facilidad de uso; está escrito en Python y tiene un tutorial fácil de seguir para empezar, que compara 9 cadenas. Se puede instalar a través de pip, por lo que no tendrás muchos problemas para instalarlo, espero.

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

Si sigues el tutorial de gensim, te guiará a través de la comparación de dos cadenas, usando 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.


Lamentablemente, no puedo ayudarte con el PY, pero puedes echar un vistazo a mi viejo proyecto que usa diccionarios para realizar las comparaciones semánticas entre las oraciones (que luego pueden codificarse en PY implementando el análisis vectorial-espacial). Deberían ser unas pocas horas de codificación para traducir de JAVA a PY. https://sourceforge.net/projects/semantics/