Procesamiento de lenguaje natural persistente analizando datos

12

Recientemente comencé a experimentar con el procesamiento del lenguaje natural (NLP) utilizando CoreNLP de Stanford , y me pregunto cuáles son algunas de las formas estándar de almacenar datos analizados de NLP para algo así como una aplicación de minería de texto.

Una forma que pensé que podría ser interesante es almacenar a los niños como una lista de adyacencia y hacer un buen uso de las consultas recursivas (Postgres lo admite y he descubierto que funciona muy bien).

Pero supongo que probablemente haya muchas formas estándar de hacer esto, dependiendo del tipo de análisis que se haya realizado y que haya sido adoptado por personas que trabajan en el campo a lo largo de los años. Entonces, ¿cuáles son las estrategias de persistencia estándar para los datos analizados de PNL y cómo se usan?

Arseni Mourzenko
fuente

Respuestas:

3

Una vez trabajé con un kit de herramientas de PNL y me encontré con el problema que describiste. Creo que hay (al menos) dos enfoques:

  • (enfoque implícito), use la memorización

    En los lenguajes de programación donde las funciones son objetos de primera clase (como Lua, Python o Perl 1 ), la memorización automática se puede implementar reemplazando (en tiempo de ejecución) una función con su valor calculado una vez que se ha calculado un valor para un determinado Conjunto de parámetros.

    Este fue el enfoque que utilicé y podría implementarse rápidamente; El inconveniente era que ciertas estructuras de datos más grandes se mantendrían en el disco, y aunque la carga era de órdenes de magnitud más rápida que el recálculo, todavía se tomaba su tiempo.

  • (explícito), utilice alguna base de datos, ya sea relacional u orientada a documentos, para almacenar todos los resultados que le interesen en el futuro. Esto requiere más atención al principio, pero valdría la pena a largo plazo.

Quizás de interés:


Editar: Otra cosa que he estado usando últimamente para cómputos de varios pasos de larga ejecución es un marco de flujo de trabajo, de los cuales hay docenas . En realidad no se trata de persistencia, pero la persistencia es un paso en el flujo de trabajo. Estoy probando luigi para eso y viene, por ejemplo, con las clases de ayuda de Hadoop y Postgres, que pueden eliminar una gran cantidad de código repetitivo.

miku
fuente
2

Una buena estrategia es utilizar una buena base de datos con reducción / mapa, también conocida como base de datos NOSQL, como MongoDB o CouchDB.
La base de datos de tesis permite crear reglas codificadas simples en las que se asignan términos y adyacencias, y reglas codificadas simples para reducir (también "agrupar") información.

Puede comenzar aquí:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
fuente