Persistente elaborazione dei dati analizzati in linguaggio naturale

12

Recentemente ho iniziato a sperimentare con l'elaborazione del linguaggio naturale (NLP) usando CoreNLP di Stanford , e sono chiedendo quali sono alcuni dei modi standard per memorizzare i dati analizzati dalla PNL per qualcosa come un'applicazione di text mining?

Un modo in cui pensavo potesse essere interessante è quello di memorizzare i bambini come un elenco di adiacenze e fare buon uso delle query ricorsive (Postgres supporta questo e ho trovato che funziona molto bene).

Ma presumo che ci siano probabilmente molti modi standard per farlo a seconda del tipo di analisi che viene fatta dalle persone che lavorano nel campo nel corso degli anni. Quindi quali sono le strategie di persistenza standard per i dati analizzati dalla PNL e come vengono utilizzati?

    
posta Arseni Mourzenko 17.10.2012 - 22:59
fonte

2 risposte

3

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

  • (approccio implicito), usa memoization

    In programming languages where functions are first-class objects (such as Lua, Python, or Perl 1), automatic memoization can be implemented by replacing (at run-time) a function with its calculated value once a value has been calculated for a given set of parameters.

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

  • (esplicito), usa un database, sia esso relazionale o orientato al documento, da archiviare tutti i risultati a cui potresti interessarti in futuro. Ciò richiede più attenzione all'inizio, ma si ripaga a lungo termine.

Forse di interesse:

Modifica: Un'altra cosa che ho usato recentemente per calcoli a lungo termine multistep è un framework del flusso di lavoro, di cui esistono decine . Non si tratta veramente di persistenza, ma la persistenza è un passo nel flusso di lavoro. Sto provando luigi per quello e viene, ad es. con le classi di helper di Hadoop e Postgres, che possono eliminare un sacco di codice boilerplate.

    
risposta data 27.11.2012 - 01:21
fonte
2

Una buona strategia consiste nell'utilizzare un buon database in primo piano Reduce / Map, noto anche come database NOSQL, come MongoDB o CouchDB.
Questo database consente di creare semplici regole codificate su cui i termini e le adiacenze della mappa e semplici regole codificate per ridurre (anche "gruppo") informazioni.

Puoi iniziare qui:
link
link

    
risposta data 06.11.2012 - 17:41
fonte