我想知道哪种编程语言更适合自然语言处理 . Java还是Python?我找到了很多关于它的问题和答案 . 但我仍然迷失在选择使用哪一个 .
我想知道哪个NLP库用于Java,因为有很多库(LingPipe,GATE,OpenNLP,StandfordNLP) . 对于Python,大多数程序员推荐使用NLTK .
但是,如果我要从 unstructured data (只是自由形成的纯英文文本)中进行一些文本处理或信息提取以获得一些有用的信息,那么最佳选择是什么? Java还是Python?合适的图书馆
Updated
我想要做的是从非结构化数据中提取有用的产品信息(例如,用户制作不同形式的广告,关于手机或笔记本电脑的英语不是很标准)
2 回答
用于NLP的Java与Python是非常偏好或必要的 . 根据公司/项目,您需要使用其中一个,除非您正在进行项目,否则通常没有太多选择 .
除了 NLTK (www.nltk.org)之外,_1557067中还有其他文本处理库:
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
(更多信息,请参阅https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)
对于 Java ,还有're tonnes of others but here'的另一个列表:
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/(包含其他语言的包装,包括python)
CogComp NLP :https://github.com/CogComp/cogcomp-nlp
这是基本字符串处理的一个很好的比较,参见http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
GATE与UIMA与OpenNLP的有用比较,请参阅https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
如果你不确定,这是NLP的语言,我个人说,"any language that will give you the desired analysis/output",见Which language or tools to learn for natural language processing?
这是最近(2017年)的NLP工具:https://github.com/alvations/awesome-community-curated-nlp
较旧的NLP工具列表(2013):http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
除语言处理工具外,您非常需要将 machine learning 工具合并到
NLP
管道中 .在
Python
和Java
中有一个完整的范围,并且再次取决于首选项以及这些库是否足够用户友好: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 (商业工具,但免费学术许可1年):https://dato.com/products/create/
(更多信息,请参阅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/
随着最近(2015)deep learning tsunami in NLP,你可能会考虑:https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
我将避免列出非偏袒/中立性的深度学习工具 .
其他Stackoverflow问题也要求NLP / ML工具:
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
(适用于NER)Entity Extraction/Recognition with free tools while feeding Lucene Index
(使用PHP)NLP programming tools using PHP?
(使用Ruby)https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
这个问题非常开放 . 也就是说,不是选择一个,而是根据你想要使用的语言进行比较(因为这两种语言都有很好的库) .
Python
就Python而言,你应该首先看的是Python Natural Language Toolkit . 正如他们在描述中所述,NLTK是构建Python程序以使用人类语言数据的领先平台 . 它提供了易于使用的界面,以超过50语料库和词汇资源,如共发现,与分类,标记化,词干,标记,分析和语义推理一套文字处理库一起 .
还有一些优秀的代码,您可以查看源自Google基于Python的Natural Language Toolkit项目 . 你可以在这里找到该代码的链接on GitHub .
Java
首先要看的是斯坦福大学的Natural Language Processing Group . 在那里分发的所有软件都是用Java编写的 . 所有最近的发行版都需要Oracle Java 6或OpenJDK 7 . 分发包包括用于命令行调用的组件,jar文件,Java API和源代码 .
您在这里的许多机器学习环境中看到的另一个很好的选择(一般选项),是Weka . Weka是用于数据挖掘任务的机器学习算法的集合 . 算法可以直接应用于数据集,也可以从您自己的Java代码调用 . Weka包含用于数据预处理,分类,回归,聚类,关联规则和可视化的工具 . 它也非常适合开发新的机器学习方案 .