Persistierende Verarbeitung von analysierten Daten in natürlicher Sprache

12

Ich habe kürzlich angefangen, mit der Verarbeitung natürlicher Sprache (NLP) unter Verwendung von Stanford CoreNLP zu experimentieren , und ich frage mich, wie NLP-geparste Daten für eine Text-Mining-Anwendung gespeichert werden können.

Eine Möglichkeit, die ich interessant finden könnte, besteht darin, die Kinder als Adjazenzliste zu speichern und rekursive Abfragen sinnvoll zu nutzen (Postgres unterstützt dies und ich habe festgestellt, dass es sehr gut funktioniert).

Ich gehe jedoch davon aus, dass es wahrscheinlich viele Standardmethoden gibt, die davon abhängen, welche Art von Analyse von den in diesem Bereich tätigen Personen im Laufe der Jahre angewendet wurde. Was sind die Standardpersistenzstrategien für NLP-analysierte Daten und wie werden sie verwendet?

Arseni Mourzenko
quelle

Antworten:

3

Ich habe einmal mit einem NLP-Toolkit gearbeitet und bin auf das von Ihnen beschriebene Problem gestoßen. Ich denke, es gibt (mindestens) zwei Ansätze:

  • (impliziter Ansatz), verwenden Sie Memoization

    In Programmiersprachen, in denen es sich bei Funktionen um erstklassige Objekte handelt (z. B. Lua, Python oder Perl 1 ), kann die automatische Speicherung implementiert werden, indem (zur Laufzeit) eine Funktion durch ihren berechneten Wert ersetzt wird, sobald ein Wert für einen bestimmten Wert berechnet wurde Parametersatz.

    Dies war der Ansatz, den ich gewählt habe und der schnell umgesetzt werden konnte. Der Nachteil war, dass bestimmte größere Datenstrukturen auf der Festplatte erhalten blieben und das Laden zwar um Größenordnungen schneller war als die Neuberechnung, aber dennoch einige Zeit in Anspruch nahm.

  • Verwenden Sie (explizit) eine Datenbank, sei es relational oder dokumentenorientiert, um alle Ergebnisse zu speichern, die Sie in Zukunft interessieren könnten. Dies erfordert am Anfang mehr Aufmerksamkeit, würde sich aber auf längere Sicht auszahlen.

Vielleicht von Interesse:


Bearbeiten: Eine andere Sache, die ich in letzter Zeit für mehrstufige Langzeitberechnungen verwendet habe, ist ein Workflow-Framework, von dem es Dutzende gibt . Es geht nicht wirklich um Persistenz, aber Persistenz ist ein Schritt im Workflow. Ich versuche Luigi dafür und es kommt zB mit Hadoop- und Postgres- Helferklassen , die viel Boilerplate-Code eliminieren können.

Miku
quelle
2

Eine gute Strategie besteht darin, eine gute Reduce / Map-Datenbank zu verwenden, die auch mit NOSQL-Datenbanken wie MongoDB oder CouchDB vertraut ist.
Thesen Datenbank ermöglicht eine einfache codierten Regeln , auf denen erstellen Karte Bedingungen und adjacencies und einfache codierten Regeln zu reduzieren (auch „Gruppe“) Informationen.

Sie können hier beginnen:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
quelle