¿Cuáles son los buenos algoritmos de similitud y métricas para textos cortos (menos de 50 palabras)?

Cualquier algoritmo que aproveche el conocimiento de un corpus, específico para su dominio de interés, es más probable que funcione mejor que otros algoritmos que solo examinan la similitud de dos textos cortos: la información presente en el texto corto puede ser insuficiente y simple. Es probable que la referencia a un perro como labrador o caniche en dos oraciones no se reconozca por referirse a la misma clase de entidad: perro. Es probable que las medidas de similitud basadas en el recuento, sin reducción de dimensionalidad, tengan un rendimiento deficiente dado que el número de palabras con las que comparar es pequeño para comenzar en textos cortos.

  • Entonces, quizás un enfoque podría ser crear incrustaciones de palabras usando word2vec, Glove o cualquiera de sus variantes ( por ejemplo, las que incluyen el manejo de la polisimia ). FastText también es una opción a considerar para generar incrustaciones de palabras también si el foco está en la similitud sintáctica en oposición a la similitud semántica. También vale la pena considerar un enfoque híbrido de similitud sintáctica y semántica y utilizar un modelo descendente para hacer una medida agregada basada en esas incorporaciones utilizando un algoritmo
    • como la distancia de Word mover ( supuestamente es bueno para oraciones cortas, lento para las más largas ).
    • O un modelo de secuencia como un RNN para la medida de similitud ( como el que se enumera a continuación )
  • Otra opción es usar doc2vec, etc., para entrenar en el corpus relevante para el dominio de su problema y usarlo como medida para comparar dos oraciones.
  • Por último, para obtener ganancias reales en el rendimiento también teniendo en cuenta el orden de las palabras ( todos los enfoques anteriores ignoran el orden de las palabras ), un modelo de secuencia como RNN que puede aprovechar las incrustaciones anteriores para realizar una medida de similitud. Este artículo presenta un modelo RNN que puede realizar similitudes de oraciones usando incrustaciones de palabras generadas por separado.

Figura de arquitecturas recurrentes siamesas para aprender similitud de oraciones, 2016

Sin embargo, en todos estos enfoques, el conocimiento se construye por adelantado y se captura en incrustaciones de palabras, fuera de un corpus, ya sea genérico o específico para el dominio del problema.

La similitud tf-idf + coseno es fácil de implementar y comprender.

Básicamente, es solo la frecuencia de palabras para crear vectores, luego aplicar el modelo de espacio vectorial. [1]

Notas al pie

[1] Modelo de espacio vectorial – Wikipedia

More Interesting

Un k-palíndromo es una cadena que se transforma en un palíndromo al eliminar como máximo k caracteres de él. Dada una cadena S y un número entero K, ¿encuentra si S es un k-palíndromo o no? Restricciones: S tiene como máximo 20,000 caracteres y 0 <= k <= 30

Agregue dos números en la hoja1, luego vea mi respuesta en la hoja2. ¿Cómo hago eso en Excel?

¿Se puede utilizar el aprendizaje automático para encontrar públicos objetivo para anuncios?

Cómo generar todas las permutaciones de fila de una matriz 2D dada de forma recursiva

¿Cuál es la diferencia entre Algorithm y API?

Estoy comenzando un proyecto de clasificación de picos, ¿dónde encuentro datos sin procesar y / o simulados?

Dada una matriz con 100 elementos (números del 0 al 99), si saco un elemento aleatorio, ¿cómo encontrarías el que saqué? ¿Cómo resolvería esto si 1: la matriz está ordenada o 2: la matriz no está ordenada?

¿Cuál fue tu algoritmo favorito del que aprendiste mucho?

¿Cuáles son todos los algoritmos que debe saber para funcionar bien en Codeforces?

Algoritmos: ¿Qué sucede cuando un usuario crea una matriz de tamaño -100, qué sucede en la memoria?

En la complejidad temporal de un algoritmo, ¿por qué puede considerarse útil que una operación elemental tome "tiempo unitario"?

¿Cuáles son algunas de las lagunas en el algoritmo de reserva de entradas de irctc?

¿Cuáles son las aplicaciones de la estructura de datos de conjuntos disjuntos?

¿Cómo comenzar a escribir un motor de ajedrez en C ++? (O Java) cuál es la matemática detrás de las estrategias

¿Cómo funciona el algoritmo de caminante aleatorio para la segmentación de imágenes en términos simples?