Existe uma boa biblioteca de processamento de linguagem natural

Eu preciso implementar um pouco de PNL no meu módulo atual. Estou procurando uma boa biblioteca que possa me ajudar aqui. Eu me deparei com ‘LingPipe’, mas não consegui seguir completamente como usá-lo.
Basicamente, precisamos implementar um recurso em que o aplicativo possa decifrar as instruções do cliente (instruções de entrega) digitadas em inglês simples. Por exemplo:

  • Vai pegar às 12:00 amanhã
  • Solicitar entrega após 10 de junho
  • Por favor, não envie antes de quarta-feira
  • Adicione mais 10 unidades de XYZ ao fim

LingPipe é muito bom e bem documentado. Você também pode dar uma olhada:

  • OpenNLP
  • Stanford PNL
  • Apache UIMA
  • PORTÃO
  • CogComp-NLP
  • FrameNet

O último especificamente pode ser de seu interesse, embora eu não saiba se existem implementações Java prontamente disponíveis (e talvez isso seja uma arma muito grande para o seu problema de qualquer maneira 🙂

A ideia de Paul de usar uma DSL é provavelmente mais fácil e rápida de implementar e mais confiável para ser usada por seus clientes. Eu também recomendaria investigar isso primeiro.

Eu acho que o uso ou não da PNL pode depender dos requisitos específicos do seu sistema. É um requisito que o inglês de formato livre seja aceito, ou apenas um certo conjunto de instruções seja aceito? Pode ser mais fácil criar uma linguagem específica de domínio que suporte o que seus usuários precisam transmitir do que fazer uma análise semântica completa de texto de forma livre.

No espaço Java, o Groovy tem algum suporte para construir DSLs .

Para outras linguagens da JVM, consulte

  • Scala : Scala PNL – Breeze e Epic (relacionado spark-project.org )
  • Clojure: clojure-opennlp