Red de conocimiento informático - Aprendizaje de código fuente - Sistema de recomendación: cómo implementar recomendaciones de similitud de contenido

Sistema de recomendación: cómo implementar recomendaciones de similitud de contenido

Muchos productos quieren agregar módulos del sistema de recomendación. La forma más sencilla es hacer recomendaciones con contenido similar. Aunque la tecnología es simple, el efecto es muy bueno para aumentar la adherencia de los usuarios y mejorar la retención de usuarios. Se agregaron muchos módulos de recomendación más adelante y se descubrió que los mejores resultados de tráfico son recomendaciones con contenido similar.

Por ejemplo, después de leer un artículo titulado "Cómo entender MySQL con Python", vi un artículo titulado "Optimización del efecto de Python operando MySQL" en recomendaciones similares y, naturalmente, me gusta leer más. Si obtiene más información al respecto y hace clic para echarle un vistazo, reducirá la tasa de rebote de todo el sitio web y aumentará la retención de usuarios, lo cual es una muy buena experiencia de usuario.

Implementar una solución de recomendación de contenido similar es relativamente simple y generalmente incluye los siguientes pasos:

1. Obtener datos de contenido, como títulos, palabras clave, categorías e incluso texto completo <; /p>

p>

Los documentos generales, los datos y otros contenidos se almacenan en mysql. Puede usar python/java y otros lenguajes para leer mysql directamente y exportarlo a un archivo en formato .txt, o directamente. utilice el método mysql -e sql > data.txt Export del shell.

En términos generales, el contenido del texto completo está demasiado disperso y no se puede utilizar como campo candidato. Sin embargo, para algunas entidades como vídeos, porque el título y el texto de introducción son demasiado pequeños, si el texto completo lo tiene. detalles, también se puede agregar al campo de datos del candidato. La tecnología de procesamiento del lenguaje natural PNL de Baidu sigue siendo muy poderosa.

3. Extraiga palabras clave de los datos de contenido;

Cuando los resultados contienen muchas palabras sin sentido, como "的" y "也", estas palabras no pueden denominarse palabras clave, TF/ El método IDF se utiliza generalmente para calcular el peso de cada palabra. El método para calcular el peso de cada palabra es ordenar los pesos TF/IDF de todas las palabras en un documento en orden inverso y tomar TOPN como palabra clave;

Si usa la segmentación de palabras de Jieba, directamente admite la extracción de palabras clave, por supuesto, también puede calcularlo usted mismo. TF es la cantidad de veces que aparece cada palabra en un artículo, IDF es la cantidad de veces que aparece esta palabra en todos los artículos y TF dividido por IDF es el valor de peso. ;

4, asignar palabras clave a vectores numéricos;

Nuestro objetivo final es calcular la similitud entre documentos para calcular la similitud del contenido que debe mapearse en un vector. el primer paso es asignar cada palabra. Hay muchos métodos de asignación:

Utilice un método popular para asignar a un vector

Utilice un método popular para asignar a un vector

Entrene su propio vector de densidad word2vec;

Utilice vectores word2vec entrenados en la industria

En términos generales, su propio conjunto de datos es relativamente pequeño y el efecto será peor que el Efecto word2vec en la industria. Por ejemplo, aquí se recomienda el código abierto de 200 dimensiones. El vector word2vec completo se puede obtener en la siguiente URL: /ailab/nnew.org.cn. Dirección: /ailab/nlp/embedding.html

5. Calcule el vector numérico de granularidad del documento

Después de obtener el vector de cada palabra, se puede calcular mediante el promedio ponderado; vector de todo el documento;

El peso se puede normalizar usando la frecuencia de cada palabra, o se puede promediar directamente;

6.p> 6. Calcular el número de documentos Similitud entre vectores de documentos;

El algoritmo cosin se puede utilizar para calcular la similitud entre vectores de documentos;

El algoritmo cosin es muy simple y puede implementarse mediante Java y Python, o usted Puede usar similitud/llamar directamente a la implementación en el módulo.

Después del cálculo, para cada documento, se ordenará en orden descendente según la similitud de cada documento, como tomar el TOP 30 como el conjunto de resultados recomendados.

7. Importe la relación de similitud del documento en cachés como mysql/redis

El paso 6 obtendrá un resultado: (ID del documento, lista de ID de documentos similares), los datos se obtendrán directamente; importe mysql o redis, la clave es el ID del documento y el valor es una lista de ID de documentos similares.

8. Cuando la página muestra un determinado contenido, extrae recomendaciones similares para su visualización.

Cuando el usuario visita una determinada página, el servicio back-end python/java recupera el redis en caché; o mysql del caché. Según el ID del documento de la página mostrada, extraiga una lista de ID similares

Porque los pasos anteriores son para calcular la lista por adelantado; Aquí también puede filtrar los que están fuera de línea y luego extraer el título correspondiente, la introducción y otra información según el ID, ensamblarlos en una lista de recomendaciones similar y devolverlos al front-end

Resumen

El cálculo anterior sin conexión es similar a los pasos recomendados. De hecho, también se puede realizar en línea de acuerdo con la estructura de búsqueda, este problema se puede realizar. , calcule la lista de palabras clave y guárdela, y luego cada vez que se acceda a la página. Es posible almacenar la lista de palabras clave y luego consultar los documentos con la misma lista de palabras clave en función de la lista de palabras clave cada vez que se accede.

Cuando hay recomendaciones de contenido similares en línea, algunos datos de comportamiento de los usuarios que hacen clic y ven documentos se pueden acumular continuamente. En base a los datos de comportamiento, se pueden entrenar modelos de filtrado colaborativo para lograr recomendaciones de filtrado colaborativo con contenido diferente pero similar. comportamientos.