Java ou Python para Processamento De Linguagem Natural [fechado]
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 recomendam NLTK.
mas se eu quiser fazer algum processamento de texto ou extracção de informação a partir de dados não estruturados (apenas texto Em inglês simples formado gratuitamente) para obter algumas informações úteis, Qual é a melhor opção? Java ou Python? Biblioteca adequada?
actualizado
o que eu quero fazer é extrair informações úteis sobre o produto a partir de dados não estruturados (por exemplo, os UTILIZADORES fazem diferentes formas de publicidade sobre telemóveis ou computadores portáteis com uma língua inglesa pouco normalizada)
2 answers
Java vs Python para NLP é muito uma preferência ou necessidade. Dependendo da empresa / projetos você precisará usar um ou outro e muitas vezes não há muita escolha a menos que você esteja dirigindo um projeto.
Excepto:NLTK
(www.nltk.org), existem na verdade outras bibliotecas para processamento de texto Em python
:
- TextBlob: http://textblob.readthedocs.org/en/dev/
- Gensim : http://radimrehurek.com/gensim/
- Padrão: http://www.clips.ua.ac.be/pattern
- picante:: http://spacy.io
- Laranja: http://orange.biolab.si/features/
- Abacaxi: https://github.com/proycon/pynlpl
(para mais, veja https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)
Para Java
, Há toneladas de outros, mas aqui está outra lista:
- libertação: http://nlp.lsi.upc.edu/freeling/
- OpenNLP: http://opennlp.apache.org/
- LingPipe: http://alias-i.com/lingpipe/
- Stanford CoreNLP : http://stanfordnlp.github.io/CoreNLP/ (vem com embalagens para outras línguas, incluindo o python)
- CogComp NLP: https://github.com/CogComp/cogcomp-nlp
Esta é uma boa comparação para o processamento básico de texto, Veja http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
Uma comparação útil do portal vs UIMA vs OpenNLP, ver https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
Se você está incerto, Qual é a língua para ir para NLP, pessoalmente eu digo, "qualquer língua que lhe dará a análise/saída desejada", veja que língua ou ferramentas para aprender para o processamento da linguagem natural?
Aqui está uma recente (2017) das ferramentas NLP: https://github.com/alvations/awesome-community-curated-nlpUma lista mais antiga de NLP ferramentas (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
Para além das ferramentas de processamento da linguagem, seria muito necessário machine learning
ferramentas a incorporar nos oleodutos NLP
.
Há uma gama completa em Python
e Java
, e mais uma vez depende da preferência e se as bibliotecas são suficientemente amigáveis:
- Sklearn (Scikit-learn): http://scikit-learn.org/stable/
- Leite: http://luispedro.org/software/milk
- Scipy: http://www.scipy.org/
- Theano: http://deeplearning.net/software/theano/
- PyML: http://pyml.sourceforge.net/
- cérebro de bexiga : http://pybrain.org/
- Graphlab Create (ferramenta comercial mas licença académica gratuita durante 1 ano): https://dato.com/products/create/
(para mais, ver https://pypi.python.org/pypi?%3Aaction=search&term=machine + aprendizagem e Envio=pesquisa)
- Weka: http://www.cs.waikato.ac.nz/ml/weka/index.html
- martelo : http://mallet.cs.umass.edu/
- Mahout: https://mahout.apache.org/
Com o recente (2015) aprendizagem profunda tsunami em PNL, possivelmente, você poderia considerar: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
Vou evitar listar ferramentas de aprendizagem profunda por não-favoritismo / neutralidade.Outras questões de Stackoverflow que também pediram NLP / ML Ferramentas:
- aprendizagem de máquinas e processamento de línguas naturais
- o que são bons pontos de partida para alguém interessado no processamento da linguagem natural?
- processamento de línguas naturais
- Processamento De Linguagem Natural em Java (NLP)
- existe uma boa biblioteca de processamento de linguagem natural
- inicialização simples do processamento da linguagem Natural para Java
- o quê? as bibliotecas oferecem métodos NLP básicos ou avançados?
- as últimas boas línguas e livros para o processamento de línguas naturais, o básico
- (para NER) extracção/reconhecimento de Entidades com ferramentas livres enquanto alimentava o Índice de Luceno
- (com o PHP) ferramentas de programação NLP usando o PHP?
- (com Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
Python
Em termos de Python, o primeiro lugar que você deve olhar é o Python Natural Language Toolkit . Como eles notam em sua descrição, NLTK é uma plataforma líder para construir programas Python para trabalhar com dados de linguagem humana. Fornece interfaces fáceis de usar para mais de 50 corpora e recursos lexicais, como WordNet, juntamente com um conjunto de bibliotecas de processamento de texto para classificação, tokenização, stemming, tagging, análise e raciocínio semântico.
Também há um código excelente que você pode procurar que se originou a partir do projeto Toolkit linguagem Natural 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 Stanford's Natural Language Processing Group. Todo o software que é distribuído lá é escrito em Java. Todas as distribuições recentes requerem Oracle Java 6+ ou OpenJDK 7+. Pacotes de distribuição incluem componentes para invocação de linha de comando, arquivos jar, uma API Java e código fonte.
Outra grande opção que você vê em muitos ambientes de aprendizagem de máquinas aqui (opção geral), é Weka . Weka é uma coleção de algoritmos de aprendizagem de máquinas para tarefas de mineração de dados. Os algoritmos podem ser aplicados diretamente a um conjunto de dados ou chamados a partir de seu próprio código Java. Weka contém ferramentas para pré-processamento de dados, classificação, regressão, agrupamento, regras de associação e visualização. É também adequado para o desenvolvimento de novos sistemas de aprendizagem por máquina.