2010-07-23 7 views
8

Dans une application que je suis en train de créer, je souhaite ajouter des fonctionnalités qui regroupent les actualités. Je veux grouper des nouvelles sur le même sujet provenant de différentes sources dans le même groupe. Par exemple, un article sur XYZ de CNN et MSNBC serait dans le même groupe. Je suppose que c'est une sorte de comparaison logique floue. Comment ferais-je cela d'un point de vue technique? Quelles sont mes options? Nous n'avons même pas encore lancé l'application, donc nous ne sommes pas limités dans les technologies que nous pouvons utiliser.Comment grouper/comparer des articles similaires

Merci d'avance pour l'aide!

Répondre

8

Ce problème se décompose en quelques sous-problèmes du point de vue de l'apprentissage machine. D'abord, vous allez vouloir déterminer quelles sont les propriétés des nouvelles que vous souhaitez regrouper. Une technique courante consiste à utiliser 'word bags': juste une liste des mots qui apparaissent dans le corps de l'histoire ou dans le titre. Vous pouvez effectuer un traitement supplémentaire tel que la suppression de l'anglais courant "stop words" qui ne fournit aucune signification, comme "le", "parce que". Vous pouvez même faire porter stemming pour supprimer les redondances avec des mots et des terminaisons de mots tels que "-ion". Cette liste de mots est le vecteur de caractéristiques de chaque document et sera utilisée pour mesurer la similarité. Vous devrez peut-être effectuer un pré-traitement pour supprimer le balisage HTML. Deuxièmement, vous devez définir une métrique de similarité: des histoires similaires obtiennent un score élevé en termes de similarité. En suivant l'approche du sac de mots, deux histoires sont similaires si elles contiennent des mots similaires (je suis vague ici, car il y a des tonnes de choses que vous pouvez essayer, et vous devrez voir ce qui fonctionne le mieux). Enfin, vous pouvez utiliser un algorithme de clustering classique, tel que k-means clustering, qui regroupe les histoires en fonction de la métrique de similarité. En résumé: convertir un article de nouvelles en un vecteur de caractéristiques -> définir une métrique de similarité basée sur ce vecteur de caractéristiques -> grappe non supervisée.

Découvrez Google scholar, il y a probablement eu quelques articles sur ce sujet spécifique dans la littérature récente. Beaucoup de ces choses dont je viens de parler sont mises en œuvre dans des modules de traitement du langage naturel et d'apprentissage automatique pour la plupart des langues principales.

+0

Bonne réponse! Ceci est exactement ce que je cherchais. Question de suivi rapide. Si je cherchais un développeur avec ces compétences, quel genre de choses devrais-je demander? Je ne sais même pas à quoi s'appelle ce domaine d'études. – Randy

+0

Cherchez un étudiant en informatique qui a suivi un cours ou qui a déjà eu de l'expérience en «traitement du langage naturel» ou en «apprentissage automatique». Votre question était très simple à répondre dans un contexte d'apprentissage automatique, alors demandez-leur comment ils mettraient en œuvre quelque chose qui regroupe les nouvelles. De plus, des projets comme celui-ci ne fonctionnent pas toujours, car il y a des tonnes de choses qui peuvent se passer dans le ML et le NLP - mais quand ça marche, c'est plutôt génial. –

1

Une approche serait de ajouter des balises aux articles quand ils sont répertoriés. Un tag serait XYZ. D'autres tags peuvent décrire le sujet de l'article.

Vous pouvez le faire dans une base de données. Vous pouvez avoir un nombre illimité de tags pour chaque article. Ensuite, les "groupes" pourraient être identifiés par un ou plusieurs tags.

Cette approche dépend fortement des êtres humains qui affectent des balises appropriées, de sorte que les bons articles soient renvoyés de la recherche, mais pas trop d'articles. Ce n'est pas facile de faire vraiment bien.

+0

hmmm, bonne solution, mais je ne pense pas que cela fonctionnerait pour nous. Notre solution extrait automatiquement les articles du Web sans interaction humaine, nous ne pouvons donc pas les taguer. – Randy

2

Le problème peut être décomposé à:

  • Comment représenter des articles (caractéristiques, habituellement un sac de mots avec TF-IDF)
  • Comment calculer la similarité entre deux articles (similitude cosinus est le le plus populaire)
  • Comment regrouper certains articles sur la base
  • ci-dessus

Il existe deux grands groupes d'algorithmes de regroupement: lots et incrémentale. Batch est génial si vous avez tous vos articles à l'avance. Étant donné que vous regroupez des actualités, vos articles arrivent probablement de manière incrémentielle. Vous ne pouvez donc pas les regrouper tous en même temps. Vous aurez besoin d'un algorithme incrémental (alias séquentiel), et ceux-ci ont tendance à être compliqués.

Vous pouvez également essayer http://www.similetrix.com, une recherche rapide sur Google les a pop up et ils prétendent offrir ce service via API.

Questions connexes