Processamento de Linguagem Natural

O Processamento de Linguagem Natural (PLN) consiste na aplicação de métodos e técnicas que possibilitem ao computador extrair a semântica da linguagem humana expressa em texto e voz. Tem aplicação na recuperação da informação, mineração de texto e reconhecimento de fala.
Algumas tarefas específicas de mineração de texto, como indexação automática, sumarização de texto e aprendizado de ontologias, são também suportadas por recursos e ferramentas de PLN.
Listo nesta página alguns recursos úteis para processamento de linguagem natural em textos escritos nos idiomas inglês ou português.

Softwares livres para processamento de linguagem natural

Língua Inglesa (Inglês)

GATE: Software de código aberto para processamento e análise de texto. Permite criar fluxo de processamento de texto para realização de tarefas de Extração de Informação por meio de construção de taxonomia via menus. Tarefas suportadas: etiquetagem morfo-sintática,  reconhecimento de entidades,  tratamento de co-referência ou anáforas, anotação de texto com base em ontologia. Mais informações no site official do GATE.

Stanford CoreNLP: O grupo Stanford PNL disponibiliza um conjunto de softwares escritos em Java para Processamento de Linguagem Natural que podem ser incorporados em outros programas. Os softwares foram desenvolvidos de acordo com a abordagem estatística do PNL para resolução de grandes problemas da linguística computacional. O Stanford CoreNLP é o mais conhecido e utilizado para análise de textos em inglês, adicionalmente há suporte para textos nos idiomas espanhol, francês, alemão, chinês e arábico. Tarefas suportadas: Tokenização, Separação de sentenças, Stemming, POS-tagging, Parsing sintático de dependências, Reconhecimento de entidades nomeadas, Análise de sentimento, Resolução de correferência, Extração de informação, etc. Veja o site StanfordNLP para detalhes sobre outros softwares.

ARK Syntactic & Semantic Parsing: Duas ferramentas de código aberto para análise de estrutura linguística do inglês (TurboParser e SEMAFOR). Combinadas permitem etiquetagem morfossintática, análise sintática de dependência e análise semântica da estrutura predicado-argumento.

Cognitive Computation Group Demos: Disponibiliza interface para uso de softwares desenvolvidos pelo grupo que processam texto em inglês e realizam: etiquetagem morfossintática, análise sintática superficial (shallow parsing), semantic role labelling, reconhecimento de entidades nomeadas, wikifier. Detalhes no site.

Língua Portuguesa (Português do Brasil, Português Europeu)

LX-Center: O LX-Center da Universidade de Lisboa fornece um conjunto de programas para processamento de textos escritos em português. Mais detalhes nos sites LX-Center e NLX-Group.

CoGrOO: O CoGrOO é um corretor gramatical para o português do Brasil. Pode ser incorporado em outros programas escritos em Java que necessitem desta funcionalidade. Mais detalhes no site do CoGrOO.


MXPOST: Etiquetador morfossintático (Part-of-Speech-Tagger) de textos. Mais detalhes na página do MXPOST. Possui modelo de linguagem para o português fornecido pelo NILC-USP. Por ser escrito em java, pode ser incorporado facilmente a programas codificados em java.

TreeTagger: Etiquetador morfossintático (Part-of-Speech-Tagger) de textos. Mais detalhes na página do TreeTagger. Possui modelo de linguagem para o português disponível aqui e também pelo NILC-USP. Pode ser integrado em programas java através do wrapper tt4j.

Recursos livres para processamento de linguagem natural

Língua Inglesa (Inglês)

WordNET: Consiste em um grande banco de dados léxico do Inglês. Substantivos, verbos, adjetivos e advérbios são agrupados em conjuntos de sinônimos (synset), cada um expressando um conceito distinto. Os conjuntos estão interligados por meio de relações semântica-conceitual e léxica. Um software livre para navegação nesta base de dados pode ser baixado no site WordNET

SentiWordNet: É um recurso léxico útil para determinação de polaridade de palavras em tarefas de mineração de opinião. Atribui para cada synset do Wordnet atribui uma das seguintes polaridades:  positivity, negativity, objectivity. Mais detalhes no site do SentiWordNet.

FrameNET: Banco de dados léxico do inglês baseado na anotação de como palavras são usadas em sentenças, possui cerca de 170 mil sentenças anotadas, podendo ser utilizado na tarefa de semantic role labelling. Outros detalhes veja no site do FrameNET.

Língua Portuguesa (Português do Brasil, Português Europeu)

BabelNet: Existem vários projetos para tradução do WordNET para outras línguas além do inglês. Um projeto que dá acesso ao WordNET em diversos idiomas (multilingue) é o BabelNet, que inclui o português europeu. Dá suporte à tarefa de tradução automática.

Open Multilingual Wordnet: Projeto semelhante ao BabelNet que incorpora um wordnet para o português do Brasil. Detalhes no site Open Multilingual Wordnet. Uma extensão deste léxico é o Extended Open Multilingual Wordnet.

OpenWordNet-PT: WordNET para o português do Brasil. Detalhes no site do OpenWordNet-PT

OpLexicon: Léxico de termos opinativos para o português do Brasil. Detalhes no site do OpLexicon.

Unitex-PB: Léxico ou dicionário de palavras para o Português Brasileiro.  Download no site do Unitex-PB.


Bibliotecas de código para processamento de  linguagem natural

UIMA: Biblioteca de software C++ e Java de código aberto para processamento de texto não-estruturado. Geralmente utilizada para criar sistemas de busca. Extensível através de plugins. Configurável por meio de arquivos xml para criação de fluxos de dados. Tarefas suportadas: extração de tokens, lematização, etiquetagem morfossintática, detecção de entidade e detecção de relações. Outras informações no site UIMA.

LingPipe: Biblioteca Java para processamento de texto usando linguística computacional. LingPipe é usado para fazer tarefas como: reconhecimento de entidades (pessoas, organizações ou locais), classificação automática, correção ortográfica. Veja outras informações no site do LingPipe.

OpenNLP: O Apache OpenNLP é uma biblioteca Java baseada em aprendizado de máquina para o processamento de linguagem natural em texto. Suporta tarefas como tokenização, segmentação de sentença, etiquetagem morfo-sintática, extração de entidade nomeada, extração de sintagmas, análise sintática e resolução de correferência. OpenNLP também inclui entropia máxima e perceptron como algoritmos de aprendizado de máquina. Veja o site OpenNLP para mais detalhes.

FreeLing: Biblioteca C++ de código aberto e livre que fornece várias funcionalidades de análise da linguagem para uma variedade de línguas incluindo o inglês e português. Dá suporte as seguintes tarefas: análise morfológica, detecção de entidades nomeadas, etiquetagem morfossintática, análise sintática (parsing), desambiguação do sentido de palavras, semantic role labelling . Possui também um front-end em linha de comando. Outros detalhes no site do FreeLing.

nlpnet: Biblioteca Python para tarefas de Processamento de Linguagem Natural baseada em redes neurais. Atualmente, ele executa a etiquetagem morfossintática, análise de dependência e rotulagem de papel semântico (SRL - Semantic Role Labelling). Pode ser utilizada como uma biblioteca Python ou através de scripts. A maior parte da arquitetura é independente do idioma, mas algumas funções foram especialmente adaptados para trabalhar com Português. Incorpora uma arquitetura de rede neural para tarefas de PNL, inspirado no sistema SENNA. Ele usa como entrada vetores construídos através do modelo espaço vetorial e não depende ferramentas externas de PNL. Atualmente, ele pode executar marcação POS, SRL e análise de dependência, sendo os modelos treinados no corpus MacMorpho do NILC-USP. Mais detalhes nos sites nlpnet e nlpnet-github. Para representação dos termos em vetores é utilizada a biblioteca semanticvetors sobre textos do corpus PLN-BR e Wikipedia em português. Disponibiliza vetores para termos criados através da biblioteca word2embeddings. Modelos treinados e prontos para uso estão disponíveis aqui.

MEAD: Biblioteca Perl para sumarização de texto multilingual, bem como para avaliação da sumarização. Implementa vários algoritmos de sumarização automática baseados em posição, centróide, máxima subsequência comum, consulta e palavras-chaves, bem como métodos baselines (leaf-based, random). Os métodos implementados para avaliação da sumarização são intrínsecos e extrínsecos. Detalhes no site do MEAD.

NLTK: Biblioteca Python para tarefas de Processamento de Linguagem Natural. Suporta diversos idiomas, incluindo o português. Tarefas suportadas: Tokenização, Stemming, POS-tagging, Parsing sintático, Raciocínio semântico, Classificação de texto. Detalhes no site do NLTK.

Spacy: Biblioteca Python para tarefas de Processamento de Linguagem Natural que permite o uso de modelos baseados em Deep Learning. Suporta diversos idiomas, incluindo o português. Tarefas suportadas: Tokenização, Stemming, POS-tagging, Parsing sintático, Análise de sentimento, Classificação de texto. Detalhes no site do Spacy.

Aelius: Biblioteca Python para tarefas de Processamento de Linguagem Natural, baseado em NLTK mas com adaptações para o português do Brasil. Acesse o site do Aelius para mais detalhes. Última atualização em 2013.

Serviços Online

Priberam: dicionário comercial para o português europeu. A interface de busca pode ser acessada no site Priberam.

Google NLP API: API da Microsoft para processamento de texto escrito em inglês, espanhol, português e outros idiomas. Tarefas suportadas: reconhecimento de idiomas, frases chaves, sentimento e entidades vinculadas (entity linking). Detalhes no site Google NLP API.

Azure Text analytics API: API da Microsoft para processamento de texto escrito em inglês, espanhol, português e outros idiomas. Tarefas suportadas: reconhecimento de idiomas, frases chaves, sentimento e entidades vinculadas (entity linking). Detalhes no site Azure Text analytics API.

IBM Watson NLU API: Antiga "AlchemyLanguage API", é uma API comercial da IBM para processamento de texto escrito em inglês, espanhol, português e outros idiomas. Detalhes no site IBM Watson NLU API.

Parser PALAVRAS: Parser sintático comercial para o português do Brasil. Interface de acesso para a demonstração do PALAVRAS.

Nenhum comentário: