Java或Python的自然语言处理

我想知道哪种编程语言对于自然语言处理更好。 Java还是Python ? 我发现了很多关于它的问题和答案。 但是我仍然迷失在select使用哪一个。

我想知道哪个NLP库用于Java,因为有很多库(LingPipe,GATE,OpenNLP,StandfordNLP)。 对于Python,大多数程序员推荐NLTK。

但是如果我要做一些文本处理或者从非结构化数据中提取信息 (只是免费形成简单的英文文本)来获取一些有用的信息,那么最好的select是什么? Java还是Python? 合适的库?

更新

我想要做的是从非结构化数据中提取有用的产品信息(例如,用户使用不是很标准的英语语言对手机或笔记本电脑进行不同forms的广告)

Java与Python的NLP是非常优先或必要的。 取决于公司/项目,您需要使用其中一个或另一个,除非您正在进行项目,否则通常没有多lessselect。

除了NLTK (www.nltk.org),实际上还有其他的python文本处理库:

  • TextBlob : http : //textblob.readthedocs.org/en/dev/
  • Gensim : http: //radimrehurek.com/gensim/
  • 模式 : http : //www.clips.ua.ac.be/pattern
  • Spacy :: http://spacy.io
  • 橙色 : http : //orange.biolab.si/features/
  • 菠萝 : https : //github.com/proycon/pynlpl

(有关更多信息,请参阅https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search

对于Java ,还有其他的方面,但这里有另一个列表:

  • Freeling : http : //nlp.lsi.upc.edu/freeling/
  • OpenNLP : http : //opennlp.apache.org/
  • LingPipe : http : //alias-i.com/lingpipe/
  • 斯坦福CoreNLP : http : //stanfordnlp.github.io/CoreNLP/ (与其他语言的包装,包括Python)
  • CogComp NLP : https : //github.com/CogComp/cogcomp-nlp

这是一个很好的比较基本的string处理,请参阅http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

GATE vs UIMA与OpenNLP的有用比较,请参阅https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

如果你不确定,NLP的语言是什么,我个人会说,“任何语言都会给你想要的分析/输出”,请参阅自然语言处理学习哪种语言或工具?

这是一个相当近期(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工具整合到NLPpipe道中。

PythonJava有一个完整的范围,而且它又一次取决于它的偏好以及这些库是否足够用户友好:

Python中的机器学习库:

  • Sklearn (Scikit-learn): http ://scikit-learn.org/stable/
  • 牛奶 : 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创build (商业工具,但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
  • 槌子 : http : //mallet.cs.umass.edu/
  • Mahout : https : //mahout.apache.org/

随着最近(2015年) NLP的深海学习海啸 ,你可能会考虑: https : //en.wikipedia.org/wiki/Comparison_of_deep_learning_software

我将避免列举非偏袒/中立的深度学习工具。


其他也要求NLP / ML工具的Stackoverflow问题:

  • 机器学习和自然语言处理
  • 有兴趣进行自然语言处理的人有什么好的起点?
  • 自然语言处理
  • Java中的自然语言处理(NLP)
  • 有没有一个很好的自然语言处理库
  • Java的简单自然语言处理启动
  • 哪些图书馆提供基本或高级的NLP方法?
  • 最新的优秀语言和自然语言处理书籍的基础知识
  • (用于NER) 实体提取/识别与免费工具同时喂Lucene指数
  • (使用PHP) 使用PHP的NLP编程工具?
  • (与Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries

问题是非常开放的。 这就是说,而不是select一个,下面是一个比较取决于你想使用的语言(因为有两种语言都有好的库)。

python

在Python方面,您应该首先看看Python Natural Language Toolkit 。 正如他们在描述中所指出的那样,NLTK是构buildPython程序以处理人类语言数据的领先平台。 它提供了超过50个语料库和词汇资源(如WordNet)的简单易用的界面,以及用于分类,标记,词干,标记,分析和语义推理的一整套文本处理库。

还有一些优秀的代码,可以从Google的基于Python的Natural Language Toolkit项目中查找。 你可以在GitHub上find这个代码的链接。

Java的

首先要看的是斯坦福大学的自然语言处理组 。 所有分发的软件都是用Java编写的。 所有最近的发行都需要Oracle Java 6+或OpenJDK 7+。 分发包包括用于命令行调用的组件,jar文件,Java API和源代码。

Weka在很多机器学习环境(通用选项)中看到的另一个很好的select是Weka 。 Weka是用于数据挖掘任务的机器学习algorithm的集合。 algorithm可以直接应用于数据集,也可以从您自己的Java代码中调用。 Weka包含数据预处理,分类,回归,聚类,关联规则和可视化的工具。 它也非常适合开发新的机器学习scheme。