Traitement persistant des données analysées en langage naturel

12

J'ai récemment commencé à expérimenter le traitement du langage naturel (NLP) à l' aide du CoreNLP de Stanford , et je me demande quelles sont les méthodes standard de stockage des données analysées NLP pour quelque chose comme une application d'exploration de texte?

Une façon que je pensais être intéressante est de stocker les enfants sous forme de liste de contiguïté et de faire bon usage des requêtes récursives (Postgres le supporte et j'ai trouvé que cela fonctionnait très bien).

Mais je suppose qu'il existe probablement de nombreuses façons standard de procéder en fonction du type d'analyse qui a été adopté par les personnes travaillant dans le domaine au fil des ans. Quelles sont donc les stratégies de persistance standard pour les données analysées en PNL et comment sont-elles utilisées?

Arseni Mourzenko
la source

Réponses:

3

Une fois, j'ai travaillé avec une boîte à outils PNL et suis tombé sur le problème que vous avez décrit. Je pense qu'il y a (au moins) deux approches:

  • (approche implicite), utiliser la mémorisation

    Dans les langages de programmation où les fonctions sont des objets de première classe (tels que Lua, Python ou Perl 1 ), la mémorisation automatique peut être implémentée en remplaçant (au moment de l'exécution) une fonction par sa valeur calculée une fois qu'une valeur a été calculée pour une donnée ensemble de paramètres.

    C'est l'approche que j'ai utilisée et elle pourrait être mise en œuvre rapidement; L'inconvénient était que certaines structures de données plus importantes persisteraient sur le disque, et bien que le chargement soit de plusieurs ordres de grandeur plus rapide que le recalcul, cela prenait encore du temps.

  • (explicite), utilisez une base de données, qu'elle soit relationnelle ou orientée document, pour stocker tous les résultats qui pourraient vous intéresser à l'avenir. Cela nécessite plus d'attention au début, mais serait rentable à long terme.

Peut-être intéressant:


Edit: Une autre chose que j'ai utilisée récemment pour les calculs à plusieurs étapes est un framework de workflow, dont il existe des dizaines . Il ne s'agit pas vraiment de persistance, mais la persistance est une étape du flux de travail. J'essaie luigi pour cela et cela vient, par exemple avec les classes d'assistance Hadoop et Postgres, qui peuvent éliminer beaucoup de code standard.

miku
la source
2

Une bonne stratégie consiste à utiliser une bonne base de données en vedette Réduire / Mapper, également connue comme la base de données NOSQL, comme MongoDB ou CouchDB.
Ces bases de données permettent de créer des règles codées simples sur lesquelles mappent les termes et les contiguïtés, et des règles codées simples pour réduire (également "grouper") les informations.

Vous pouvez commencer ici:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
la source