Dados analisados ​​de processamento de idioma natural persistente

12

Recentemente, comecei a experimentar o processamento de linguagem natural (NLP) usando o CoreNLP de Stanford e estou me perguntando quais são algumas das maneiras padrão de armazenar dados analisados ​​de PNL para algo como um aplicativo de mineração de texto?

Uma maneira que pensei que poderia ser interessante é armazenar os filhos como uma lista de adjacências e fazer bom uso de consultas recursivas (o Postgres suporta isso e achei que funciona muito bem).

Mas suponho que provavelmente existem muitas maneiras padrão de fazer isso, dependendo do tipo de análise que está sendo feita e que foi adotada por pessoas que trabalham no campo ao longo dos anos. Então, quais são as estratégias de persistência padrão para os dados analisados ​​da PNL e como eles são usados?

Arseni Mourzenko
fonte

Respostas:

3

Uma vez trabalhei com um kit de ferramentas da PNL e me deparei com o problema que você descreveu. Eu acho que existem (pelo menos) duas abordagens:

  • (abordagem implícita), use memorização

    Nas linguagens de programação em que funções são objetos de primeira classe (como Lua, Python ou Perl 1 ), a memorização automática pode ser implementada substituindo (em tempo de execução) uma função pelo valor calculado, uma vez que um valor foi calculado para um determinado conjunto de parâmetros.

    Essa foi a abordagem que usei e poderia ser implementada rapidamente; A desvantagem era que certas estruturas de dados maiores persistiam no disco e, embora o carregamento fosse de magnitude superior ao do recálculo, ainda demorava um pouco.

  • (explícito), use algum banco de dados, seja ele relacional ou orientado a documentos, para armazenar todos os resultados com os quais você possa se importar no futuro. Isso requer mais atenção no começo, mas valeria a pena a longo prazo.

Talvez de interesse:


Edit: Outra coisa que tenho usado ultimamente para cálculos de longa duração em várias etapas é uma estrutura de fluxo de trabalho, da qual existem dezenas . Não se trata realmente de persistência, mas persistência é uma etapa do fluxo de trabalho. Estou tentando o luigi para isso e ele vem, por exemplo, com as classes auxiliares do Hadoop e Postgres, que podem eliminar muito código do clichê.

miku
fonte
2

Uma boa estratégia é usar um bom banco de dados em destaque Reduce / Map, também conhecido como banco de dados NOSQL, como MongoDB ou CouchDB.
O banco de dados de teses permite criar regras simples codificadas nas quais termos e adjacências do mapa mapeiam , e regras simples codificadas para reduzir (também "agrupar") informações.

Você pode começar aqui:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
fonte