He estado mirando la etiqueta nlp en SO durante las últimas horas y estoy seguro de que no me perdí nada, pero si lo hiciera, por favor síganme a la pregunta.¿Cuáles son algunas buenas formas de estimar la similitud semántica "aproximada" entre oraciones?
Mientras tanto, describiré lo que estoy tratando de hacer. Una noción común que observé en muchos mensajes es que la similitud semántica es difícil. Por ejemplo, a partir de this posterior, 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 el de utilizar k-means clustering y categorizar el texto basándose en la similitud semántica así que todo lo que necesito saber es si son una coincidencia aproximada. Por ejemplo, en el ejemplo anterior, estoy de acuerdo con clasificar 1,2,4,5 en una categoría y 3 en otra (por supuesto, 3 se respaldarán con algunas oraciones más similares). Algo así como, encontrar artículos relacionados, pero no tienen que estar 100% relacionados.
Creo que necesito construir finalmente representaciones vectoriales de cada oración, algo así como su huella digital, pero exactamente lo que este vector debería contener sigue siendo una pregunta abierta para mí. ¿Son n-grams, o algo de wordnet o simplemente palabras derivadas individuales o algo completamente diferente?
This Hilo hizo un trabajo fantástico al enumerar todas las técnicas relacionadas, pero lamentablemente se detuvo justo cuando la publicación llegó a lo que quería. ¿Alguna sugerencia sobre cuál es el último estado de la técnica en esta área?
También se proporciona una implementación de Python de SVD para matrices dispersas en [scikit-learn] (http://scikit-learn.sourceforge.net/) como 'scikits.learn.utils.extmath.fast_svd'. –