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)
Respostas:
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 empython
:(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 learning
ferramentas para incorporar aosNLP
pipelines.Há toda uma gama em
Python
eJava
, 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:
fonte
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.
fonte