9

Der folgende unstrukturierte Text hat drei unterschiedliche Themen - Stallone, Philadelphia und die Amerikanische Revolution. Aber mit welchem ​​Algorithmus oder welcher Technik würden Sie diesen Inhalt in einzelne Absätze unterteilen?Wie verwende ich NLP, um einen unstrukturierten Textinhalt in einzelne Absätze zu trennen?

Klassifizierer funktionieren in dieser Situation nicht. Ich versuchte auch, Jaccard Similarity Analyzer zu verwenden, um Abstand zwischen aufeinander folgenden Sätzen zu finden, und versuchte, aufeinanderfolgende Sätze in einen Absatz zu gruppieren, wenn der Abstand zwischen ihnen weniger als ein gegebener Wert war. Gibt es eine bessere Methode?

Das ist mein Text Beispiel:

Sylvester Stallone Gardenzio, der den Spitznamen Sly Stallone, ist ein amerikanischer Schauspieler, Regisseur und Drehbuchautor. Stallone ist bekannt für seine Machismo- und Hollywood-Action-Rollen. Stallones Film Rocky wurde in das National Film Registry aufgenommen und seine Filmrequisiten wurden im Smithsonian Museum platziert. Stallone nutzte den Eingang zum Philadelphia Museum of Art in der Rocky-Serie und ließ die Gegend als Rocky Steps bekannt werden. Philadelphia war einst die zweitgrößte Stadt im britischen Empire (nach London), ein Handels-, Bildungs- und Kulturzentrum), und das soziale und geografische Zentrum der ursprünglichen 13 amerikanischen Kolonien. Es war ein Herzstück der frühen amerikanischen Geschichte, Gastgeber für viele der Ideen und Aktionen, die die amerikanische Revolution und Unabhängigkeit geboren. Die amerikanische Revolution war der politische Umsturz in der letzten Hälfte des 18. Jahrhunderts, in dem dreizehn Kolonien in Nordamerika beigetreten zusammen, um aus dem Britischen Empire auszubrechen und sich zu den Vereinigten Staaten von Amerika zu vereinigen. Sie lehnten zuerst die Autorität des Parlaments von Großbritannien ab, um sie von Übersee ohne Vertretung zu regieren, und vertrieben dann alle königlichen Beamten. Bis 1774 hatte jede Kolonie einen Provinzialkongress oder eine gleichwertige Regierungsinstitution gegründet, um einzelne selbstverwaltete Staaten zu bilden.

Antwort

1

Ich weiß nicht viel darüber, also ist diese Antwort ein Stub für einen besseren. Zwei Punkte

  1. Ein Name für dieses Problem ist Thema Identifikation, und http://research.microsoft.com/en-us/um/people/cyl/download/papers/thesis97.pdf ist eine häufig zitierte Arbeit in diesem Bereich.
  2. Dies ist wahrscheinlich sehr schwer. Ich hätte Philadelphia nicht von der Amerikanischen Revolution getrennt, wenn Sie es mir nicht gesagt hätten.
14

Also habe ich lange in NLP gearbeitet, und das ist ein wirklich hartes Problem, das Sie angehen wollen. Sie werden nie in der Lage sein, eine Lösung mit 100% iger Genauigkeit zu implementieren. Sie sollten also im Voraus entscheiden, ob Sie falsch-negative Entscheidungen treffen (einen Absatzsegmentierungspunkt nicht finden können) oder falsch-positive Entscheidungen (Einfügen einer falschen Segmentierung) Punkte). Sobald Sie das getan haben, stellen Sie ein Korpus von Dokumenten zusammen und kommentieren Sie die wahren Segmentierungspunkte, die Sie erwarten.

Sobald Sie dies getan haben, benötigen Sie einen Mechanismus zum Auffinden von EOS-Punkten (Ende des Satzes). Dann müssen Sie zwischen jedem Satzpaar eine binäre Entscheidung treffen: Soll hier eine Absatzgrenze eingefügt werden?

Sie könnten die Kohäsion von Konzepten innerhalb jedes Absatzes basierend auf verschiedenen Segmentierungspunkten messen. Zum Beispiel in einem Dokument mit fünf Sätzen (ABCDE), gibt es sechzehn verschiedene Möglichkeiten zu segmentieren es:

ABCDE ABCD|E ABC|DE ABC|D|E AB|CDE AB|CD|E AB|C|DE AB|C|D|E 
A|BCDE A|BCD|E A|BC|DE A|BC|D|E A|B|CDE A|B|CD|E A|B|C|DE A|B|C|D|E 

Zusammenhalt zu messen, könnte man einen Satz zu Satz Ahnlichkeitsmetrik (basierend auf einiger Sammlung Verwendung von Merkmale für jeden Satz extrahiert). Der Einfachheit halber, wenn zwei benachbarte Sätze eine Ähnlichkeitsmetrik von 0 haben.95, dann gibt es eine 0,05 "Kosten" für die Kombination in den gleichen Absatz. Die Gesamtkosten eines Dokument-Segmentierungsplans sind die Summe aller Kosten für das Zusammenführen von Sätzen. Um zur endgültigen Segmentierung zu gelangen, wählen Sie den Plan mit den günstigsten Gesamtkosten.

Natürlich gibt es für ein Dokument mit mehr als ein paar Sätzen zu viele verschiedene Segmentierungspermutationen, um alle ihre Kosten brute-force zu bewerten. Sie benötigen also eine Heuristik, um den Prozess zu leiten. Dynamische Programmierung könnte hier hilfreich sein.

Wie für die eigentliche Satz-Feature-Extraktion ... Nun, das ist, wo es wirklich kompliziert wird.

Wahrscheinlich möchten Sie stark syntaktische Wörter (Bindewörter wie Präpositionen, Konjunktionen, helfende Verben und Klauselmarkierungen) ignorieren und Ihre Ähnlichkeit auf semantisch relevantere Wörter (Substantive und Verben und in geringerem Maße Adjektive und Adverbien) aufbauen).

Eine naive Implementierung könnte nur die Anzahl der Instanzen jedes Wortes hochzählen und die Wortanzahl in einem Satz mit der Wortanzahl in einem benachbarten Satz vergleichen. Wenn ein wichtiges Wort (wie "Philadelphia") in zwei benachbarten Sätzen erscheint, dann könnten sie eine hohe Ähnlichkeitsbewertung erhalten.

Aber das Problem damit ist, dass zwei benachbarte Sätze sehr ähnliche Themen haben können, auch wenn diese Sätze vollständig nicht überlappende Sätze von Wörtern haben.

Sie müssen also den "Sinn" jedes Wortes (seine spezifische Bedeutung, den umgebenden Kontext vorausgesetzt) ​​bewerten und diese Bedeutung verallgemeinern, um eine breitere Domäne zu umfassen.

Zum Beispiel, einen Satz mit dem Wort "grünlich" in ihm darstellen. Während meiner Merkmalsextraktion würde ich sicherlich den genauen lexikalischen Wert ("grünlich") angeben, aber ich würde auch eine morphologische Transformation anwenden, indem ich das Wort auf seine Wurzelform ("grün") normiere. Dann würde ich dieses Wort in einer Taxonomie nachschlagen und feststellen, dass es sich um eine Farbe handelt, die als visuelle Beschreibung weiter verallgemeinert werden kann. Auf der Grundlage dieses einen Wortes könnte ich also meiner Sammlung von Satzmerkmalen vier verschiedene Merkmale hinzufügen ("grünlich", "grün", "[Farbe]", "[visuell]"). Wenn der nächste Satz im Dokument wieder auf die Farbe "grün" verweist, wären die beiden Sätze sehr ähnlich. Wenn der nächste Satz das Wort "rot" verwendet, dann hätten sie immer noch Ähnlichkeit, aber in geringerem Maße.

Also, es gibt ein paar grundlegende Ideen. Sie könnten diese ad infinitum näher ausführen und den Algorithmus so anpassen, dass er auf Ihrem spezifischen Datensatz gut funktioniert. Es gibt eine Million verschiedene Möglichkeiten, dieses Problem anzugehen, aber ich hoffe, dass einige dieser Vorschläge hilfreich für den Anfang sind.

0

Für dieses Beispiel ist es die beste Methode, Punkte zu finden, denen kein Leerzeichen folgt!

Verwandte Themen