Wie drücke ich subtile Beziehungen in meinen Daten aus?


20

"A" ist mit "B" und "C" verwandt. Wie zeige ich, dass "B" und "C" in diesem Zusammenhang auch zusammenhängen könnten?

Beispiel:

Hier sind ein paar Schlagzeilen über ein aktuelles Broadway-Stück:

  1. David Mamets Glengarry Glen Ross mit Al Pacino wird am Broadway eröffnet
  2. Al Pacino in 'Glengarry Glen Ross': Was dachten die Kritiker?
  3. Al Pacino verdient glanzlose Kritiken für den Broadway-Turn
  4. Theaterkritik: Glengarry Glen Ross verkauft seine Stars hart
  5. Glengarry Glen Ross; Hey, wer hat die Klieg Lights getötet?

Problem:

Wenn Sie einen Fuzzy-String-Abgleich über diese Datensätze durchführen, werden einige Beziehungen hergestellt, andere jedoch nicht, obwohl ein menschlicher Leser sie in viel größeren Datensätzen aus dem Kontext heraussuchen könnte.

Wie finde ich die Beziehung, die nahe legt, dass # 3 mit # 4 zusammenhängt? Beide können leicht mit # 1 verbunden werden, aber nicht miteinander.

Gibt es einen (Googlable) Namen für diese Art von Daten oder Struktur? Nach was für einem Algorithmus suche ich?

Tor:

Bei 1.000 Schlagzeilen schlägt ein System automatisch vor, dass es sich bei diesen 5 Einträgen wahrscheinlich um dasselbe handelt.

Um ehrlich zu sein, es ist so lange her, dass ich programmiert habe. Ich bin ratlos, wie ich dieses Problem richtig artikulieren kann. (Ich weiß nicht was ich nicht weiß, wenn das Sinn macht).

Dies ist ein persönliches Projekt und ich schreibe es in Python. Vielen Dank im Voraus für jede Hilfe, Ratschläge und Hinweise!


1
klingt wie natürliche Sprachanalyse und / oder eine andere probabilistische Technik ist erforderlich
jk.

2
Dies ist eine großartige Frage!
Michael Brown

Ich glaube, ich habe Systeme gesehen, die dies in Prolog umsetzen können.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner Ich vermute, Sie denken über eine Vereinheitlichung der Logikprogrammierung nach .
Izkata

Antworten:



7

Sie betreten die Welt der Semantik. Es gibt öffentliche Dienste, die Text analysieren und die wichtigsten Konzepte herausholen (eine schnelle Suche nach semantischer API hat einige ergeben), die ein Dokument in freier Form analysieren und die Hauptthemen zurückgeben, auf die man stößt, einschließlich Personen, Orte, Dinge, Daten und Konzepte . Einige der besseren werden in einem Format zurückkehren, das als [RDF] bekannt ist.

Wenn Sie Ihr eigenes System bauen möchten, das dies kann, ist das Feld " Natural Language Processing" (Verarbeitung natürlicher Sprache) ein sehr faszinierendes Kaninchenloch, in das Sie eintauchen können.


4

Wenn möglich, schreiben Sie die Geschichte zusammen mit der Überschrift. Überschriften können manchmal "süß" werden und nur tangential auf das verweisen, was diskutiert wird. Dies funktioniert gut mit Menschen (weil sie einen globalen Kontext haben ), aber nicht so gut mit NLP.

Wie in Karl Bielefeldts Antwort erwähnt, ist Clustering ein guter Ansatz, aber der Teufel steckt im Detail. Sie müssen nicht nur einen Clustering-Ansatz auswählen, der zu Ihrem Problem / Benutzerbereich passt, sondern auch herausfinden, was geclustert wird.

Mein Hintergrund liegt im Bereich Information Retrieval (IR) aus den 80er und 90er Jahren, und wir haben uns auf Ähnlichkeitssuche und Clustering auf der Basis von Schwerpunkten konzentriert . Unsere Dokumente wurden durch gewichtete Attributvektoren dargestellt , bei denen es sich im Grunde um eine Liste von Begriffen und ihrer relativen Bedeutung im Dokument handelt. Dieser Ansatz kann funktionieren (obwohl er bei einigen Sammlungen besser ist als bei anderen), hat jedoch Probleme mit kurzen Überschriften, da ihnen wichtige Vokabeln zum Zusammenfügen fehlen. Wenn Sie jedoch das gesamte Dokument verwenden, erhalten Sie eine viel umfangreichere Liste von Begriffen (und wahrscheinlich ein besseres Gefühl für Wichtigkeit), und diese Liste von Begriffen erleichtert es wahrscheinlich, die Verbindung zu erkennen (dh zu berechnen), wenn Überschriften vorhanden sind "süß".

Meine E-Mail-Adresse befindet sich in meinem Profil, wenn Sie Fragen zur Vektorgenerierung usw. haben möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.