8
votes

Comment grouper / comparer des articles de presse similaires

Dans une application que je crée, je veux ajouter des fonctionnalités qui regroupent des histoires de nouvelles. Je souhaite regrouper des informations sur le même sujet 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 comparaison logique floue. Comment allais-je faire cela à partir d'un point de vue technique? Quelles sont mes options? Nous n'avons même pas encore commencé l'application, nous ne sommes donc pas limités dans les technologies que nous pouvons utiliser.

Merci, à l'avance pour l'aide!


0 commentaires

3 Réponses :


1
votes

Une approche serait de Ajouter des balises aux articles quand ils sont répertoriés. Une étiquette serait XYZ. Les autres balises pourraient 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 une ou plusieurs balises.

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


1 commentaires

Hmmm, bonne solution, mais je ne pense pas que cela fonctionnerait pour nous. Notre solution tirera automatiquement des articles du Web sans aucune interaction humaine, nous ne pouvons donc les étiqueter.



9
votes

Ce problème se décompose dans quelques sous-émérules d'un point de vue de l'apprentissage de la machine.

Tout d'abord, vous allez vouloir savoir quelles propriétés des reportages que vous souhaitez grouper en fonction. Une technique courante consiste à utiliser 'Sacs Word' : 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 commun " Mots d'arrêt " qui ne fournissent aucune signification, telle comme "le", "parce que". Vous pouvez même faire porteur stemming pour supprimer les redondances avec des mots pluriels et des fins de mots tels que "-ion" . Cette liste de mots est le vecteur de fonctionnalité de chaque document et sera utilisé pour mesurer la similarité. Vous devrez peut-être faire du prétraitement pour supprimer le balisage HTML.

Deuxièmement, vous devez définir une métrique de similarité: des histoires similaires marquent une similitude. En passant avec le sac de mots approche, deux histoires sont similaires si elles ont 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 mieux).

Enfin, vous pouvez utiliser un algorithme de clustering classique, tel que k-old clustering , qui regroupe les histoires ensemble, sur la base de la métrique de similarité.

En résumé: convertir une nouvelle histoire en un vecteur de fonctionnalité -> Définissez une métrique de similarité basée sur ce vecteur de fonctionnalité -> clustering non supervisé.

Consultez Google Scholar , il y a probablement été des documents sur ce sujet spécifique dans la littérature récente. Beaucoup de ces choses que je viens de discuter sont mises en œuvre dans le traitement des langues naturelles et les modules d'apprentissage de la machine pour la plupart des langues principales.


2 commentaires

Très 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 ce que ce domaine d'étude est appelé.


Recherchez un étudiant en informatique qui a pris une classe avec ou a eu une expérience avec «traitement de la langue naturelle» ou «apprentissage de la machine». Votre question était très simple de répondre à un contexte d'apprentissage de la machine, alors demandez-leur comment ils implémentaient quelque chose qui regroupe des histoires de nouvelles. En outre, des projets comme celui-ci ne fonctionnent pas toujours car il y a des tonnes de choses qui peuvent aller en tordre dans ML et NLP - mais quand cela fonctionne, il est assez génial.



2
votes

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

  • Comment représenter des articles (caractéristiques, généralement un sac de mots avec TF-IDF)
  • Comment calculer la similitude entre deux articles (la similitude cosinus est la plus populaire)
  • Comment grouper des articles ensemble en fonction de ce qui précède

    Il existe deux grands groupes d'algorithmes de clustering: lot et incrémental. Le lot est génial si vous avez tous vos articles à l'avance. Depuis que vous êtes en clustering News, vous avez probablement vos articles à venir progressivement, vous ne pouvez donc pas les regrouper à la fois. Vous aurez besoin d'un algorithme incrémental (AKA séquentiel), et ceux-ci ont tendance à être compliqué.

    Vous pouvez également essayer 0 commentaires