algorithm - Midiendo la similitud semántica entre dos frases
nlp semantics (2)
Este es un problema muy complicado.
La técnica principal en la que puedo pensar (antes de entrar en procesos de PNL más complicados) sería aplicar la similitud de coseno (o cualquier otra métrica) a cada par de frases. Obviamente, esta solución sería muy ineficiente en este momento debido al problema de no coincidencia: las oraciones pueden referirse al mismo concepto con diferentes palabras.
Para resolver este problema, debe transformar la representación inicial de cada frase con un significado más "conceptual". Una opción sería extender cada palabra con sus sinónimos (es decir, usar WordNet , otra opción es aplicar métricas como la semántica distributiva DS ( http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf ) que extienden la representación de cada término con las palabras más probables para aparecer con él.
Ejemplo: Una representación de un documento: {"auto", "raza"} se transformaría en {"automóvil", "automóvil", "raza"} con sinónimos. Mientras, con DS sería algo como: {"coche", "rueda", "carretera", "piloto", ...}
Obviamente esta transformación no será binaria. Cada término tendrá algunos pesos asociados.
Espero que esto ayude.
Quiero medir la similitud semántica entre dos frases / oraciones. ¿Hay algún marco que pueda usar de forma directa y confiable?
Ya he comprobado esta pregunta , pero es bastante antigua y no pude encontrar una respuesta realmente útil allí. Había un enlace , pero encontré esto poco confiable.
p.ej:
Tengo una frase: me sentí aplastado
Tengo varias opciones: forzar hacia adentro, pulverizar, destruir emocionalmente, remodelar, etc.
Quiero encontrar el término / frase con mayor similitud con el primero.
La respuesta aquí es: destruido emocionalmente.
La imagen más grande es: quiero identificar qué marco de FrameNet coincide con el verbo dado según su uso en una oración.
Actualización: encontré esta biblioteca muy útil para medir la similitud entre dos palabras. También el mecanismo de similitud de ConceptNet es muy bueno.
y esta biblioteca para medir la similitud semántica entre oraciones.
Si alguien tiene alguna idea por favor comparta.
Tal vez la API cortical.io podría ayudar con su problema. El enfoque aquí es que cada palabra se convierte en una huella dactilar semántica que caracteriza su significado con características semánticas de 16K. Las frases, las oraciones o los textos más largos se convierten en huellas dactilares AL ORDENAR la palabra huellas dactilares juntas. Después de esta conversión en una representación semántica (numérica), la distancia semántica se puede calcular fácilmente utilizando medidas de distancia como la Distancia Euclidiana o la similitud de coseno. Todas las funciones de conversión y comparación necesarias son proporcionadas por la API.