¿Cómo agrupa Google News las historias?

Después de haber trabajado en Google News, sé cómo funciona la agrupación de Google News. Pero me abstendré de los detalles y destacaré los enfoques generales utilizados para agrupar las noticias. Antes de entrar en clustering, es importante asegurarse de tener el conjunto de datos adecuado para trabajar y tener los términos correctos.

1) ¿Qué páginas son artículos?

No todas las páginas de la web son un artículo. Le gustaría comenzar con un buen conjunto de páginas que parecen artículos. Ahora imagine cómo se puede distinguir una página de artículo de una página que no es de artículo, de una página que está tratando de vender productos, de una lista de otros artículos, etc.

2) ¿Cómo obtenemos el texto dentro del artículo?

Los artículos tienen texto incrustado en el interior junto con una gran cantidad de repeticiones no deseadas, anuncios, mensajes de derechos de autor, etc. ¿Cómo puede segmentar el artículo para obtener el texto del artículo y tirar el resto? Este es un problema de extracción de información. La mayoría de los sitios utilizan el análisis HTML DOM / SAX junto con muchas otras heurísticas.

3) ¿Cómo obtenemos términos definitivos dentro del artículo?

Los artículos son mucho texto, que incluyen todo tipo de conjunciones, conectivas, pronombres, sustantivos, números, etc. ¿Qué es lo más importante para un artículo? Existen técnicas como TF-IDF para llegar a una buena distancia. Algunos tipos de características son más importantes que otros, especialmente cuando el objetivo es agrupar artículos relacionados. Cuando está considerando noticias, está más interesado en reunir artículos de un incidente (o evento). Por ejemplo, desea que se unan artículos de un robo a mano armada en Albania, en lugar de todos los artículos sobre robos de todo el mundo. Sucede que las “entidades con nombre” (sustantivos propios) son las más adecuadas para caracterizar un incidente. Entonces les darías más peso. A veces, considerar frases (como Nueva York) puede ayudar a mejorar la calidad de la agrupación.

4) ¿Cómo sabes que dos documentos son similares?

Hasta ahora, has traído un artículo a su forma vectorial. Un vector de palabras clave y pesos, que representan la importancia del artículo. Dado que tiene dos de esos vectores, ¿cómo calculamos la similitud entre ellos? Aquí existen medidas como la similitud del coseno. Existen varias medidas de similitud, y cada una tiene ventajas y desventajas. Por ejemplo, la similitud de coseno también da importancia a los términos que se encuentran en un artículo y no se encuentran en el otro. Entonces, si un documento es un superconjunto de otro, la similitud del coseno aún puede ser baja. Si no desea esta propiedad, puede buscar otras medidas de distancia.

5) ¿Cómo agrupa un conjunto de documentos relacionados?

La agrupación de documentos es un tema extremadamente bien investigado. Para empezar, obtendrá algoritmos de los libros, como agrupación jerárquica aglomerativa, agrupación k-means y agrupación de arriba hacia abajo. La agrupación de k-means puede no ser la más adecuada cuando no sabe en cuántas agrupaciones tiene que agrupar los artículos. Por lo tanto, tendría que inspeccionar HAC y los métodos de arriba hacia abajo. Los mayores obstáculos para vencer en un sistema de agrupación de producción son:

a) Agrupación distribuida: la agrupación es inherentemente un método de “comparar este documento con cualquier otro documento”. La agrupación distribuida a menudo no produce la calidad del resultado que esperarías. Por lo tanto, está limitado a hacer todo en una máquina. Se pueden emplear otros métodos obvios de partición. Los idiomas son uno de ellos. La clasificación es otra (agrupar artículos sobre ciencia en un solo lugar). Pero a menudo se encuentra que obtener la clasificación correcta es más difícil que lograr la agrupación correcta.

b) Escalabilidad: todos los documentos (millones de artículos se rastrean todos los días) no caben en una máquina. ¿Puede elegir primero una muestra representativa, calcular grupos y luego asignar el resto a estos grupos?

c) Incremental: los artículos siguen llegando todo el tiempo. Pero asignar un nuevo artículo a grupos existentes puede causar un “cambio de tema”, y eventualmente los artículos nuevos pueden diferir sustancialmente de lo que representaba el grupo original. Necesita un equilibrio entre la agrupación por lotes y la agrupación incremental. Consideraría la agrupación por lotes en una ventana de tiempo pasado, y luego la agrupación incremental para artículos recién rastreados.

En un sistema de producción como Google News, se probará una combinación de varios algoritmos de última generación, junto con muchas heurísticas para hacer que todo el problema sea manejable. ¡Recuerde que nadie quiere leer sus noticias tarde! La agrupación debe ser lo más rápida posible. Las personas también notarán errores fácilmente y se quejarán. Entonces la barra de error es baja.

Google News ha trabajado en este problema durante varios años, y muchos ingenieros inteligentes han contribuido a ello. Es por eso que este sigue siendo el único sistema que puede hacer algo como esto a escala. Otros tendrán mucho que ponerse al día.

Creo que hay varios factores que determinan esto. En primer lugar, en mi experiencia (como siempre, podría estar equivocado), una fuente solo puede clasificarse una vez para un término en particular dentro de un grupo de historias.

Google verifica qué historias individuales se publican en cada fuente de noticias y luego determina la agrupación basada (principalmente en mi opinión) en lo siguiente.

  1. Palabras clave de identificación únicas como nombres, lugares, cosas, etc.
  2. El momento de la historia (¿otras fuentes incluyen artículos similares al mismo tiempo?)
  3. Citas de personas entrevistadas.

Esta agrupación y clasificación se determinan algorítmicamente y los resultados no siempre son precisos de ninguna manera. He visto muchas historias clasificadas dentro del mismo grupo de historias cuando en realidad no se relacionan. Al mismo tiempo, Google solo permite un máximo de 10 grupos de historias en un momento dado y los términos de búsqueda vagos no producirán resultados precisos, debido a un límite de 10 “historias” diferentes por término de búsqueda.

More Interesting

Cómo ordenar la matriz de una estructura utilizando solo uno de sus miembros de datos en c ++ (STL)

¿Cómo funcionan los algoritmos de clasificación en un sistema distribuido grande?

¿Son los algoritmos iguales para todos los lenguajes de programación?

¿Cuál es la forma más eficiente de verificar si un elemento es parte de un conjunto?

Cómo resolver este problema de matrices en programación en C

¿Cómo se crean los algoritmos y para qué se utilizan?

Al modelar un autómata determinista de estado finito, ¿qué algoritmo de recorrido gráfico debe usarse?

Cómo encontrar la cantidad mínima de pasos necesarios para eliminar todos los peones del tablero de ajedrez

¿Es posible tener un número de elementos en una matriz más que el tamaño de la matriz que se define en un momento de compilación?

¿Qué institutos mejor C o estructuras de datos o facultad en Hyderabad?

¿Es posible hacer un programa algorítmico de intercambio oscilante?

Si arr es una matriz de enteros, ¿por qué la expresión ar ++ no es legal?

Dada una cuadrícula N-por-M llena de números positivos, ¿cuál es el mejor programa para encontrar la ruta de arriba a la izquierda a la derecha que minimiza la suma de todos los números?

¿Deberíamos usar un árbol rojo-negro con más frecuencia para abordar los problemas de integridad de NP? ¿Es esto cierto?

¿Hay algún libro sobre estructuras de datos y algoritmos que se centre más en la perspectiva de gestión de memoria de los algoritmos?