Java ou Python para processamento de linguagem natural [fechado]

112

Gostaria de saber qual linguagem de programação é melhor para o processamento de linguagem natural. Java ou Python ? Eu encontrei muitas perguntas e respostas sobre isso. Mas ainda estou perdido em escolher qual usar.

E eu quero saber qual biblioteca NLP usar para Java, já que existem muitas bibliotecas (LingPipe, GATE, OpenNLP, StandfordNLP). Para Python, a maioria dos programadores recomenda NLTK.

Mas se eu tiver que fazer algum processamento de texto ou extração de informações de dados não estruturados (apenas texto simples em inglês de forma livre) para obter algumas informações úteis, qual é a melhor opção? Java ou Python? Biblioteca adequada?

Atualizada

O que eu quero fazer é extrair informações úteis do produto a partir de dados não estruturados (por exemplo, os usuários fazem diferentes formas de publicidade sobre celulares ou laptops com um idioma inglês não muito comum)

Jin Ling
fonte
47
Eu odeio que esse tipo de pergunta não seja bem-vindo aqui no SO. Acho que a intenção era evitar guerras santas, mas isso contribui para o conteúdo da IMO.
L0j1k,
2
Se fosse redigido para dizer "Quais são as principais bibliotecas de PNL Java e Python e seus pontos fortes?" talvez isso resolva isso? A resposta muda com o tempo, mas também considero essas perguntas muito úteis.
Scott Smith
5
Eu também gostaria que esse tipo de pergunta fosse bem-vindo no SO. Recentemente, tentei pesquisar os pontos fortes da PNL em Python vs R, e foi imediatamente rejeitado. Nada bom para quem está tentando enquadrar seus projetos na linguagem certa.
Ksofiac

Respostas:

133

Java vs Python para PNL é uma preferência ou necessidade. Dependendo da empresa / projetos, você precisará usar um ou outro e geralmente não há muita escolha, a menos que você esteja liderando um projeto.

Além de NLTK(www.nltk.org), existem outras bibliotecas para processamento de texto em python:

(para obter mais informações, consulte https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search )

Pois Java, há toneladas de outros, mas aqui está outra lista:

Esta é uma boa comparação para o processamento básico de strings, consulte http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Uma comparação útil de GATE vs UIMA vs OpenNLP, consulte https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Se você não tiver certeza de qual é o idioma a ser usado na PNL, pessoalmente digo, "qualquer idioma que lhe dê a análise / saída desejada", consulte Que idioma ou ferramentas aprender para o processamento de linguagem natural?

Aqui está um muito recente (2017) de ferramentas de PNL: https://github.com/alvations/awesome-community-curated-nlp

Uma lista mais antiga de ferramentas de PNL (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Além das ferramentas de processamento de linguagem, você precisaria muito de machine learningferramentas para incorporar aos NLPpipelines.

Há toda uma gama em Pythone Java, e mais uma vez, depende da preferência e se as bibliotecas são fáceis de usar:

Bibliotecas de aprendizado de máquina em python:

(para obter mais informações, consulte https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search )


Com o recente tsunami de aprendizado profundo em PNL (2015) , possivelmente você poderia considerar: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Evitarei listar ferramentas de aprendizagem profunda por não favoritismo / neutralidade.


Outras perguntas do Stackoverflow que também pediam ferramentas de PNL / ML:

Alvas
fonte
1
Obrigado por fornecer muitas informações sobre as ferramentas de PNL e ML
Jin Ling,
42

A questão é muito aberta. Dito isso, ao invés de escolher um, abaixo está uma comparação dependendo do idioma que você gostaria de usar (já que existem boas bibliotecas disponíveis em ambos os idiomas).

Pitão

Em termos de Python, o primeiro lugar que você deve examinar é o Python Natural Language Toolkit . Como eles observam em sua descrição, o NLTK é uma plataforma líder para a construção de programas Python para trabalhar com dados de linguagem humana. Ele fornece interfaces fáceis de usar para mais de 50 corpora e recursos lexicais, como WordNet, junto com um conjunto de bibliotecas de processamento de texto para classificação, tokenização, lematização, marcação, análise e raciocínio semântico.

Também existe um código excelente que você pode consultar, originado do projeto Natural Language Toolkit do Google que é baseado em Python. Você pode encontrar um link para esse código aqui no GitHub .

Java

O primeiro lugar a procurar seria o Grupo de Processamento de Linguagem Natural de Stanford . Todo o software distribuído lá é escrito em Java. Todas as distribuições recentes requerem Oracle Java 6+ ou OpenJDK 7 ou superior. Os pacotes de distribuição incluem componentes para chamada de linha de comando, arquivos jar, uma API Java e código-fonte.

Outra ótima opção que você vê em muitos ambientes de aprendizado de máquina aqui (opção geral) é o Weka . Weka é uma coleção de algoritmos de aprendizado de máquina para tarefas de mineração de dados. Os algoritmos podem ser aplicados diretamente a um conjunto de dados ou chamados de seu próprio código Java. Weka contém ferramentas para pré-processamento, classificação, regressão, agrupamento, regras de associação e visualização de dados. Também é adequado para o desenvolvimento de novos esquemas de aprendizado de máquina.

Nathaniel Payne
fonte
9
Resposta incrível. Eu realmente não entendo por que esse tipo de pergunta é menosprezado aqui. +1
L0j1k
8
Eu concordo completamente. A pergunta que foi feita é geral. Dito isso, esses são precisamente os tipos de questões que frequentemente me encontro enfrentando, principalmente quando sou novo em uma área.
Nathaniel Payne
1
Em termos de bibliotecas e ferramentas baseadas em Java, outro ótimo que você pode ver é o LingPipe. alias-i.com/lingpipe
Nathaniel Payne
2
@NathanielPayne: Muito obrigado por suas sugestões. Isso me dá um guia para iniciar a PNL.
Jin Ling,