Linguaggio naturale persistente che elabora dati analizzati


12

Di recente ho iniziato a sperimentare l'elaborazione del linguaggio naturale (NLP) utilizzando CoreNLP di Stanford e mi chiedo quali sono alcuni dei metodi standard per archiviare i dati analizzati NLP per qualcosa come un'applicazione di mining di testo?

Un modo che ho pensato potesse essere interessante è quello di memorizzare i bambini come un elenco di adiacenza e fare buon uso delle query ricorsive (Postgres supporta questo e ho scoperto che funziona davvero bene).

Ma suppongo che ci siano probabilmente molti modi standard per farlo a seconda del tipo di analisi che è stata adottata da persone che lavorano sul campo nel corso degli anni. Quindi quali sono le strategie di persistenza standard per i dati analizzati NLP e come vengono utilizzati?

Risposte:


3

Una volta ho lavorato con un toolkit NLP e ho riscontrato il problema che hai descritto. Penso che ci siano (almeno) due approcci:

  • (approccio implicito), utilizzare la memoization

    Nei linguaggi di programmazione in cui le funzioni sono oggetti di prima classe (come Lua, Python o Perl 1 ), la memorizzazione automatica può essere implementata sostituendo (in fase di esecuzione) una funzione con il suo valore calcolato una volta che un valore è stato calcolato per un dato insieme di parametri.

    Questo era l'approccio che ho usato e potrebbe essere implementato rapidamente; lo svantaggio era che alcune strutture di dati più grandi sarebbero state persistenti su disco e mentre il caricamento era di ordini di grandezza più veloce del ricalcolo, ci voleva ancora del tempo.

  • (esplicito), utilizzare un database, sia esso relazionale o orientato ai documenti, per archiviare tutti i risultati che potrebbero interessarti in futuro. Ciò richiede maggiore attenzione all'inizio, ma ripagherà a lungo termine.

Forse di interesse:


Modifica: Un'altra cosa che ho usato di recente per i calcoli a esecuzione prolungata multistep è un framework del flusso di lavoro, di cui ce ne sono dozzine . Non si tratta davvero di persistenza, ma la persistenza è un passo nel flusso di lavoro. Sto provando Luigi per questo e viene, ad esempio con le classi di supporto di Hadoop e Postgres, che possono eliminare molto codice di boilerplate.


2

Una buona strategia è quella di utilizzare un buon database con funzionalità Riduci / Mappa, noto anche come database NOSQL, come MongoDB o CouchDB.
Questo database consente di creare semplici regole codificate su cui mappare termini e adiacenze e semplici regole codificate per ridurre (anche "raggruppare") le informazioni.

Puoi iniziare qui:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.