2010-07-23 7 views
8

In einer App, die ich erstelle, möchte ich Funktionalität hinzufügen, die Nachrichtengeschichten zusammenfasst. Ich möchte Nachrichten zu demselben Thema aus verschiedenen Quellen in derselben Gruppe gruppieren. Zum Beispiel wäre ein Artikel auf XYZ von CNN und MSNBC in derselben Gruppe. Ich vermute es ist eine Art Fuzzy-Logik-Vergleich. Wie würde ich das technisch machen? Was sind meine Möglichkeiten? Wir haben die App noch nicht einmal gestartet und sind daher nicht auf die Technologien beschränkt, die wir verwenden können.Ähnliche Artikel gruppieren/vergleichen

Danke, im Voraus für die Hilfe!

Antwort

8

Dieses Problem gliedert sich unter dem Gesichtspunkt des maschinellen Lernens in einige Teilprobleme auf.

Zuerst werden Sie herausfinden wollen, welche Eigenschaften der Nachrichtengeschichten Sie basierend gruppieren möchten. Eine übliche Technik ist es, 'word bags' zu verwenden: nur eine Liste der Wörter, die im Hauptteil der Geschichte oder im Titel erscheinen. Sie können einige zusätzliche Verarbeitungsschritte ausführen, z. B. das Entfernen von allgemeinem Englisch "stop words", die keine Bedeutung haben, z. B. "das", "weil". Sie können sogar porter stemming verwenden, um Redundanzen mit mehreren Wörtern und Wortendungen wie "-ion" zu entfernen. Diese Liste von Wörtern ist der Merkmalsvektor jedes Dokuments und wird verwendet, um Ähnlichkeit zu messen. Möglicherweise müssen Sie eine Vorverarbeitung durchführen, um HTML-Markup zu entfernen.

Zweitens müssen Sie eine Ähnlichkeitsmetrik definieren: ähnliche Storys haben eine hohe Ähnlichkeit. Wenn man sich den Textbeutel nähert, ähneln sich zwei Geschichten, wenn sie ähnliche Wörter haben (ich bin hier vage, weil es Unmengen von Dingen gibt, die man ausprobieren kann, und man muss sehen, welche am besten funktionieren).

Schließlich können Sie einen klassischen Clusteralgorithmus verwenden, z. B. k-means clustering, der die Storys basierend auf der Ähnlichkeitsmetrik gruppiert.

Zusammenfassend: Nachrichtenstory in einen Feature-Vektor umwandeln -> definieren Sie eine Ähnlichkeitsmetrik basierend auf diesem Feature-Vektor -> unüberwachtes Clustering.

Schauen Sie sich Google scholar, gab es wahrscheinlich einige Papiere zu diesem speziellen Thema in der jüngsten Literatur. Viele dieser Dinge, die ich gerade besprochen habe, werden in den meisten Sprachen in den Modulen für natürliche Sprachverarbeitung und maschinelles Lernen implementiert.

+0

Große Antwort! Genau das habe ich gesucht. Kurze Folgefrage. Wenn ich nach einem Entwickler mit diesen Fähigkeiten suche, welche Art von Dingen sollte ich fragen? Ich weiß nicht einmal, wie dieses Studienfach heißt. – Randy

+0

Suchen Sie nach einem Informatikstudenten, der entweder einen Kurs mit "natürlicher Sprachverarbeitung" oder "maschinellem Lernen" belegt hat oder bereits Erfahrung mit diesen hat. Ihre Frage war im Zusammenhang mit dem maschinellen Lernen sehr einfach zu beantworten, also fragen Sie sie einfach, wie sie etwas umsetzen würden, das Nachrichtengeschichten zusammenfasst. Außerdem funktionieren solche Projekte nicht immer, weil es viele Dinge gibt, die in ML und NLP wringen können - aber wenn es funktioniert, ist es ziemlich toll. –

1

Ein Ansatz wäre Tags zu den Artikeln hinzufügen, wenn sie aufgeführt sind. Ein Tag wäre XYZ. Andere Tags könnten den Artikel Betreff beschreiben.

Sie können das in einer Datenbank tun. Sie können eine unbegrenzte Anzahl von Tags für jeden Artikel haben. Dann könnten die "Gruppen" durch ein oder mehrere Tags identifiziert werden.

Dieser Ansatz hängt stark davon ab, dass Menschen passende Tags zuweisen, so dass die richtigen Artikel von der Suche zurückgegeben werden, aber nicht zu viele Artikel. Es ist nicht leicht, wirklich gut zu machen.

+0

hmmm, gute Lösung, aber ich denke nicht, dass das für uns arbeiten würde. Unsere Lösung wird automatisch Artikel aus dem Internet ohne menschliche Interaktion ziehen, so dass wir sie nicht markieren können. – Randy

2

Das Problem aufgeschlüsselt werden kann:

  • Wie Artikel darstellen (Funktionen, in der Regel ein Beutel von Wörtern mit TF-IDF)
  • Wie Ähnlichkeit zwischen zwei Artikeln berechnen (Kosinusähnlichkeit ist beliebtesten)
  • Wie Artikel Cluster zusammen auf der Grundlage der oben

Es gibt zwei große Gruppen von Clustering-Algorithmen: Batch und inkrementell. Batch ist großartig, wenn Sie alle Ihre Artikel im Voraus haben. Da Sie Nachrichten gruppieren, haben Sie wahrscheinlich Ihre Artikel inkrementell, sodass Sie sie nicht alle auf einmal zusammenfassen können. Sie benötigen einen inkrementellen (auch sequenziellen) Algorithmus, und diese sind in der Regel kompliziert.

Sie können auch versuchen http://www.similetrix.com, eine schnelle Google-Suche tauchte sie auf und sie behaupten, diesen Dienst über API anzubieten.