2010-07-23 16 views
8

En una aplicación que estoy creando, quiero agregar la funcionalidad que agrupa las noticias juntas. Quiero agrupar historias de noticias sobre el mismo tema de diferentes fuentes en el mismo grupo. Por ejemplo, un artículo sobre XYZ de CNN y MSNBC estaría en el mismo grupo. Supongo que es una especie de comparación de lógica difusa. ¿Cómo voy a hacer esto desde un punto de vista técnico? ¿Cuáles son mis opciones? Todavía no hemos comenzado la aplicación, por lo que no estamos limitados en las tecnologías que podemos usar.Cómo agrupar/comparar noticias similares artículos

¡Gracias de antemano por la ayuda!

Respuesta

8

Este problema se divide en algunos subproblemas desde el punto de vista de aprendizaje automático.

En primer lugar, querrá saber en qué propiedades de las historias de noticias desea agrupar. Una técnica común es usar 'word bags': solo una lista de las palabras que aparecen en el cuerpo de la historia o en el título. Puede hacer un procesamiento adicional, como eliminar el inglés común "stop words" que no proporciona ningún significado, como "el", "porque". Incluso puede hacer porter stemming para eliminar redundancias con palabras en plural y terminaciones de palabras como "-ion". Esta lista de palabras es el vector de características de cada documento y se usará para medir la similitud. Es posible que tenga que realizar un preprocesamiento para eliminar el marcado HTML.

En segundo lugar, debe definir una métrica de similitud: las historias similares tienen una puntuación alta en similitud. Siguiendo con el enfoque de la bolsa de palabras, dos historias son similares si tienen palabras similares en ellas (estoy siendo vago aquí, porque hay muchas cosas que puedes probar, y tendrás que ver cuál funciona mejor).

Finalmente, puede usar un algoritmo de clúster clásico, como k-means clustering, que agrupa las historias juntas, según la métrica de similitud.

En resumen: convierta una noticia en un vector de características -> defina una métrica de similitud basada en este vector de características -> agrupamiento no supervisado.

Echa un vistazo Google scholar, probablemente haya algunos artículos sobre este tema específico en la literatura reciente. Muchas de estas cosas que acabo de comentar se implementan en los módulos de procesamiento de lenguaje natural y aprendizaje automático para la mayoría de los idiomas principales.

+0

¡Gran respuesta! Esto es exactamente lo que estaba buscando. Pregunta de seguimiento rápido. Si estuviera buscando un desarrollador con estos conjuntos de habilidades, ¿qué tipo de cosas debería pedir? Ni siquiera sé cómo se llama este campo de estudio. – Randy

+0

Busque un estudiante de informática que haya tomado una clase o haya tenido experiencia con el "procesamiento del lenguaje natural" o el "aprendizaje automático". Tu pregunta fue muy fácil de responder en un contexto de aprendizaje automático, así que solo pregúntales cómo implementarían algo que agrupe las noticias. Además, los proyectos como este no siempre funcionan porque hay toneladas de cosas que pueden exprimirse en ML y PNL, pero cuando funciona, es bastante asombroso. –

1

Un enfoque sería agregar etiquetas a los artículos cuando se enumeran. Una etiqueta sería XYZ. Otras etiquetas pueden describir el tema del artículo.

Puede hacerlo en una base de datos. Puede tener un número ilimitado de etiquetas para cada artículo. Entonces, los "grupos" podrían identificarse por una o más etiquetas.

Este enfoque depende en gran medida de que los seres humanos asignen etiquetas apropiadas, de modo que los artículos correctos sean devueltos de la búsqueda, pero no demasiados artículos. No es fácil de hacer realmente bien.

+0

hmmm, buena solución, pero no creo que eso funcione para nosotros. Nuestra solución extraerá automáticamente artículos de la web sin ninguna interacción humana, por lo que no podemos etiquetarlos. – Randy

2

El problema se puede dividir a:

  • ¿Cómo representar artículos (características, por lo general una bolsa de palabras con el TF-IDF)
  • Cómo calcular la similitud entre dos artículos (similitud del coseno es el más popular)
  • Cómo agrupan los artículos sobre la base de lo anterior

Hay dos grandes grupos de algoritmos de agrupamiento: lotes e incremental. El lote es excelente si tiene todos sus artículos antes de tiempo. Debido a que está agrupando noticias, probablemente obtenga sus artículos de forma incremental, por lo que no podrá agruparlos todos a la vez. Necesitarás un algoritmo incremental (también conocido como secuencial), y estos tienden a ser complicados.

También puedes probar http://www.similetrix.com, apareció una búsqueda rápida en Google y dicen ofrecer este servicio a través de API.

Cuestiones relacionadas