Estoy construyendo mi primer agregador de noticias, que extraerá de muchas fuentes de noticias diferentes, y estoy tratando de evitar obtener artículos redundantes de los diversos canales RSS. ¿Cuáles son algunos pensamientos sobre esto?

De hecho, tuve el mismo problema hace unas semanas. Es un problema interesante

The Hard Way – Hashing sensible a la localidad
Utilicé un sistema de recomendación de ítems basado en hashing sensible a la localidad (LSH). En primer lugar, preprocesé todos los elementos para extraer palabras clave usando tf – idf y entidades usando el grupo Stanford NLP (procesamiento del lenguaje natural). Por lo tanto, cada elemento se convierte en un vector de 30 palabras clave y entidad. Después de eso, LSH pone artículos similares en cubos con artículos similares. Luego, solo necesita encontrar elementos similares en ese depósito en lugar de todo el conjunto de datos.

Puedes usar diferentes distancias para calcular la similitud. La distancia coseno funcionó bien para mí. En su caso, los artículos con poca distancia se considerarán redundantes. Puede establecer un umbral para que si la distancia es menor que, por ejemplo, 0.1, el elemento se clasificará como redundante.

LSH es una buena técnica si va a manejar grandes cantidades de datos porque reduce la cantidad de elementos que necesita buscar.

Implementé LSH siguiendo este libro gratuito: Minería de conjuntos de datos masivos – Capítulo 9.2. Una búsqueda rápida sobre las implementaciones de LSH le devolverá una lista de las bibliotecas de LSH disponibles para su idioma favorito. También podría abrir el código fuente de mi biblioteca de sistema de recomendación en el futuro, así que si está interesado, siga la pregunta y actualizaré esta respuesta cuando esté abierto.

El camino difícil: aprendizaje no supervisado
Un enfoque diferente implica el uso de algoritmos de aprendizaje no supervisados ​​para la agrupación. Esta es un área de investigación bien y puede leer una breve comparación de los algoritmos disponibles aquí 2.3. Agrupación: documentación de scikit-learn 0.16.1. Scikit-learn tiene implementaciones de tales algoritmos. Una vez que tenga los elementos agrupados, puede aplicar el segundo párrafo de la sección anterior.

La manera fácil
Una solución más simple sería encontrar similitud de elementos utilizando todo el conjunto de datos, pero esta solución no es escalable.

Solía ​​trabajar en una startup llamada Chat Sports que hace exactamente esto, centrándose en las noticias deportivas.

Esto depende mucho de lo que quiere decir con redundante. Los artículos que están casi duplicados entre sí son fáciles de detectar. Supongo que te refieres a artículos que son muy similares entre sí o artículos que cubren el mismo tema de noticias. Desafortunadamente, esto es mucho más difícil de lograr si quieres hacerlo bien. Una solución rápida sería encontrar una biblioteca que mida la similitud del texto y, para cada artículo, compare cuán similar es con cualquier otro artículo ese día dando empatía sobre el título del artículo. A continuación, puede elegir qué artículo desea mostrar a sus usuarios en función de factores como la cantidad de acciones o me gusta de Facebook. Esto requerirá un ajuste preciso constante para hacerlo bien.

Para hacerlo bien, eche un vistazo a estas respuestas:
http://www.quora.com/How-does-Google-News-cluster-stories
http://stackoverflow.com/questio

No soy un experto en feeds RSS, pero parece ser que debes considerar lo siguiente:

  1. Defina qué, para usted, califica como ‘redundante’ y encuentre una manera de filtrar eso.
  2. Incluya solo en aquellos feeds que generen el contenido menos redundante.
  3. Realice una curación manual para eliminar con precisión lo que desea / no desea incluir.