Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I would like to know which programming language is better for natural language processing. Java or Python? I have found lots of questions and answers regarding about it. But I am still lost in choosing which one to use.
And I want to know which NLP library to use for Java since there are lots of libraries (LingPipe, GATE, OpenNLP, StandfordNLP). For Python, most programmers recommend NLTK.
But if I am to do some text processing or information extraction from unstructured data (just free formed plain English text) to get some useful information, what is the best option? Java or Python? Suitable library?
Updated
What I want to do is to extract useful product information from unstructured data (E.g. users make different forms of advertisement about mobiles or laptops with not very standard English language)
Java vs Python for NLP is very much a preference or necessity. Depending on the company/projects you'll need to use one or the other and often there isn't much of a choice unless you're heading a project.
Other than NLTK (www.nltk.org), there are actually other libraries for text processing in python:
TextBlob: http://textblob.readthedocs.org/en/dev/
Gensim: http://radimrehurek.com/gensim/
Pattern: http://www.clips.ua.ac.be/pattern
Spacy:: http://spacy.io
Orange: http://orange.biolab.si/features/
Pineapple: https://github.com/proycon/pynlpl
(for more, see https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)
For Java, there're tonnes of others but here's another list:
Freeling: http://nlp.lsi.upc.edu/freeling/
OpenNLP: http://opennlp.apache.org/
LingPipe: http://alias-i.com/lingpipe/
Stanford CoreNLP: http://stanfordnlp.github.io/CoreNLP/ (comes with wrappers for other languages, python included)
CogComp NLP: https://github.com/CogComp/cogcomp-nlp
This is a nice comparison for basic string processing, see http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
A useful comparison of GATE vs UIMA vs OpenNLP, see https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
If you're uncertain, which is the language to go for NLP, personally i say, "any language that will give you the desired analysis/output", see Which language or tools to learn for natural language processing?
Here's a pretty recent (2017) of NLP tools: https://github.com/alvations/awesome-community-curated-nlp
An older list of NLP tools (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
Other than language processing tools, you would very much need machine learning tools to incorporate into NLP pipelines.
There's a whole range in Python and Java, and once again it's up to preference and whether the libraries are user-friendly enough:
Machine Learning libraries in python:
Sklearn (Scikit-learn): http://scikit-learn.org/stable/
Milk: http://luispedro.org/software/milk
Scipy: http://www.scipy.org/
Theano: http://deeplearning.net/software/theano/
PyML: http://pyml.sourceforge.net/
pyBrain: http://pybrain.org/
Graphlab Create (Commerical tool but free academic license for 1 year): https://dato.com/products/create/
(for more, see https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)
Weka: http://www.cs.waikato.ac.nz/ml/weka/index.html
Mallet: http://mallet.cs.umass.edu/
Mahout: https://mahout.apache.org/
With the recent (2015) deep learning tsunami in NLP, possibly you could consider: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
I'll avoid listing deep learning tools out of non-favoritism / neutrality.
Other Stackoverflow questions that also asked for NLP/ML tools:
Machine Learning and Natural Language Processing
What are good starting points for someone interested in natural language processing?
Natural language processing
Natural Language Processing in Java (NLP)
Is there a good natural language processing library
Simple Natural Language Processing Startup for Java
What libraries offer basic or advanced NLP methods?
Latest good languages and books for Natural Language Processing, the basics
(For NER) Entity Extraction/Recognition with free tools while feeding Lucene Index
(With PHP) NLP programming tools using PHP?
(With Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
The question is very open ended. That said, rather than choose one, below is a comparison depending on the language that you would like to use (since there are good libraries available in both languages).
Python
In terms of Python, the first place you should look at is the Python Natural Language Toolkit. As they note in their description, NLTK is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning.
There is also some excellent code that you can look up that originated out of Google's Natural Language Toolkit project that is Python based. You can find a link to that code here on GitHub.
Java
The first place to look would be Stanford's Natural Language Processing Group. All of software that is distributed there is written in Java. All recent distributions require Oracle Java 6+ or OpenJDK 7+. Distribution packages include components for command-line invocation, jar files, a Java API, and source code.
Another great option that you see in a lot of machine learning environments here (general option), is Weka. Weka is a collection of machine learning algorithms for data mining tasks. The algorithms can either be applied directly to a dataset or called from your own Java code. Weka contains tools for data pre-processing, classification, regression, clustering, association rules, and visualization. It is also well-suited for developing new machine learning schemes.
This question already has answers here:
Embedded Prolog Interpreter/Compiler for Java
(13 answers)
Closed 8 years ago.
I hope my question is not a duplicate... I have implemented some rules using Prolog. I would like to ask if there is any way to use these rules in a java application. I do not want to implement everything in java from scratch. I would like to embed the code written in Prolog in a java application. Thanks in advance.
There are various ways. But judging from your question you're looking for a quick solution.
JPL (since i notice a lot of people are using SWI nowadays):
http://www.swi-prolog.org/FAQ/Java.html
The GNU Prolog library for Java:
http://www.gnu.org/software/gnuprologjava/
SICtus (It comes with syntax examples, etc so it shouldn't be hard for you to use it quickly)
http://sicstus.sics.se/sicstus/docs/3.7.1/html/sicstus_12.html
tuProlog (Said to be the easiest to use, beginner friendly)
http://www.alice.unibo.it/xwiki/bin/view/Tuprolog/
This question already has answers here:
Good Java graph algorithm library? [closed]
(18 answers)
Closed 9 years ago.
I would like to implement a graph data structure in java to maintain a graph of objects. How should I achieve this? Is there a readily available library which could help?
Is there a readily available library which could help?
DSL is the Data Structures Library in Java
JGraphT is a free Java graph library that provides mathematical graph-theory objects and algorithms.
JUNG is the Java Universal Network/Graph Framework
JUNG
JGRAPH
And read this may help you javax.swing.tree.TreeModel
This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
Java : Is there a good natural language processing library
are there any known open source distributions that one can use like nltk for python?
GATE is the most famous industry-level librarywith a java implementation I can think of.
It is truly powerful.
Otherwise:
OpenNLP
LingPipe
Xerox used to have a set of nice online tools as well, but I don't know if they have a Java implementation or any accessible web-services for them.
This question already has answers here:
What is Java's answer to WPF? [closed]
(3 answers)
Closed 4 years ago.
Is there an Java equivalent to the WPF platform?
No, but there is JavaFX which can be compared to Flash/Flex & SilverLight
The most likely answer is Soyatec's eFace. It supports several key features of WPF. It uses XAML and databinding, so you can apply MVVM and test your ViewModel. Also it supports templating.
Also, this is used in Eclipse e4.
JavaFX is SUN's trial to compete with WPF.
It can be used in both Applets and Desktop applications
You can see this comparison
Please take a look at Qt Jambi. It uses the Qt framework:
http://qt-jambi.org/