El mejor algoritmo práctico para la similitud de oraciones

18

Tengo dos oraciones, S1 y S2, ambas con un recuento de palabras (generalmente) por debajo de 15.

Cuáles son los algoritmos más útiles y exitosos (aprendizaje automático), que posiblemente sean fáciles de implementar (la red neuronal está bien, a menos que la arquitectura sea tan complicada como Google Inception, etc.).

Estoy buscando un algoritmo que funcione bien sin dedicar demasiado tiempo. ¿Hay algún algoritmo que haya encontrado exitoso y fácil de usar?

Esto puede, pero no tiene que caer en la categoría de agrupamiento. Mi experiencia es del aprendizaje automático, por lo que cualquier sugerencia es bienvenida :)

DaveTheAl
fuente
¿Qué implementaste? También me enfrento a lo mismo, tengo que encontrar una solución para los artículos relacionados con 'k' en un corpus que se actualiza constantemente.
Dileepa

Respuestas:

16

La similitud de coseno para el espacio vectorial podría ser su respuesta: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

O podrías calcular el vector propio de cada oración. Pero el problema es, ¿qué es la similitud?

"Esto es un árbol", "Esto no es un árbol"

Si desea verificar el significado semántico de la oración, necesitará un conjunto de datos de vectores de palabras. Con el conjunto de datos wordvector podrá verificar la relación entre las palabras. Ejemplo: (Rey - Hombre + mujer = Reina)

Siraj Raval tiene un buen cuaderno de Python para crear conjuntos de datos de vectores de palabras: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE

Christian Frei
fuente
8

Un enfoque que podría probar es promediar vectores de palabras generados por algoritmos de inclusión de palabras (word2vec, glove, etc.). Estos algoritmos crean un vector para cada palabra y la similitud del coseno entre ellos representa la similitud semántica entre las palabras. En el caso de los vectores promedio entre las oraciones. Un buen punto de partida para conocer más acerca de estos métodos es este artículo: Qué tan bien las incrustaciones de oraciones capturan el significado . Discute algunos métodos de incrustación de oraciones. También le sugiero que busque en el Aprendizaje no supervisado de incrustaciones de oraciones utilizando características de n-Gram composicionales. Los autores afirman que su enfoque supera los métodos más avanzados. También proporcionan el código y algunas instrucciones de uso en este repositorio de Github .

feynman410
fuente
2

Debería consultar https://github.com/seatgeek/fuzzywuzzy#usage . fuzzywuzzy es una biblioteca impresionante para la coincidencia de cadenas / texto que proporciona un número entre 0 y 100 en función de lo similares que son dos oraciones. Utiliza la distancia de Levenshtein para calcular las diferencias entre secuencias en un paquete simple de usar. Además, consulte esta publicación de blog para obtener una explicación detallada de cómo fuzzywuzzy hace el trabajo. Este blog también está escrito por el autor fuzzywuzzy

karthikeyan mg
fuente
1

Este blog tiene la solución para la similitud de texto corto. Utilizan principalmente el modelo de red neuronal BERT para encontrar similitudes entre oraciones. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e

vimal Dharmalingam
fuente
Hola, bienvenido a Data Science Stack Exchange. Cuando haga referencia a una solución desde un sitio web externo, considere escribir un resumen en su respuesta. De hecho, esto será más fácil de leer y evitará que su respuesta se vuelva obsoleta si la página de destino cambia o el enlace se rompe.
Romain Reboulleau
Bien, esto es realmente bueno. Entonces, ¿básicamente usan BERT? ¡@RomainReboulleau definitivamente tiene razón!
DaveTheAl