python nlp machine-learning data-mining nltk

python - ¿Cuáles son algunas buenas maneras de estimar la similitud semántica "aproximada" entre oraciones?



nlp machine-learning (2)

Le sugiero que pruebe un marco de modelado de temas como la asignación de direccionamiento latente (LDA). La idea es que los documentos (en su caso, las oraciones, que pueden resultar ser un problema) se generan a partir de un conjunto de temas latentes (ocultos); LDA recupera esos temas, representándolos por grupos de palabras.

Una implementación de LDA en Python está disponible como parte del paquete gratuito de Gensim. Podría intentar aplicarlo a sus oraciones y luego ejecutar k- significa en su salida.

He estado mirando la etiqueta nlp en SO durante las últimas dos horas y confío en que no me perdí nada, pero si lo hice, por favor, señale la pregunta.

Mientras tanto, sin embargo, describiré lo que estoy tratando de hacer. Una noción común que observé en muchas publicaciones es que la similitud semántica es difícil. Por ejemplo, a partir de this post, la solución aceptada sugiere lo siguiente:

First of all, neither from the perspective of computational linguistics nor of theoretical linguistics is it clear what the term ''semantic similarity'' means exactly. .... Consider these examples: Pete and Rob have found a dog near the station. Pete and Rob have never found a dog near the station. Pete and Rob both like programming a lot. Patricia found a dog near the station. It was a dog who found Pete and Rob under the snow. Which of the sentences 2-4 are similar to 1? 2 is the exact opposite of 1, still it is about Pete and Rob (not) finding a dog.

Mi requisito de alto nivel es utilizar el agrupamiento de k-means y clasificar el texto según la similitud semántica, por lo que todo lo que necesito saber es si son una coincidencia aproximada. Por ejemplo, en el ejemplo anterior, estoy de acuerdo con la clasificación de 1,2,4,5 en una categoría y 3 en otra (por supuesto, 3 será respaldado con algunas oraciones más similares). Algo así como, encontrar artículos relacionados, pero no tienen que estar 100% relacionados.

Estoy pensando que necesito construir finalmente representaciones vectoriales de cada oración, algo así como su huella dactilar pero exactamente lo que este vector debería contener es todavía una pregunta abierta para mí. ¿Es n-grams, o algo de la red de palabras o solo las palabras derivadas individuales o algo más?

This hilo hizo un trabajo fantástico al enumerar todas las técnicas relacionadas, pero desafortunadamente se detuvo justo cuando el mensaje llegó a lo que quería. ¿Alguna sugerencia sobre qué es lo último en tecnología en esta área?