用于自然语言处理的 Java 或 Python

我想知道哪种编程语言更适合自然语言处理。爪哇咖啡还是 巨蟒?关于这个问题,我找到了很多问题和答案。但我还是不知道该用哪个。

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

但是,如果我要做一些文本处理或从信息抽取(只是自由格式的纯英文文本) ,以获得一些有用的信息,什么是最好的选择?Java 还是 Python?合适的图书馆?

更新

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

72093 次浏览

这个问题是非常开放的。也就是说,下面不是选择一种语言,而是根据您希望使用的语言进行比较(因为两种语言都有很好的库可用)。

巨蟒

就 Python 而言,首先应该考虑的是 Python 自然语言工具包。正如他们在描述中所指出的,NLTK 是构建 Python 程序以处理人类语言数据的领先平台。它为超过50个语料库和词法资源(如 WordNet)提供了易于使用的界面,同时还提供了一套文本处理库,用于分类、标记化、词干提取、标记、解析和语义推理。

还有一些优秀的代码,您可以查找起源于 Google 的基于 Python 的自然语言工具包项目。你可以在这里找到该代码的链接 on GitHub

爪哇咖啡

首先要看的是斯坦福大学的 Natural Language Processing Group。所有分布在那里的软件都是用 Java 编写的。所有最近的发行版都需要 OracleJava6 + 或 OpenJDK7 + 。分发包包括用于命令行调用、 jar 文件、 JavaAPI 和源代码的组件。

Another great option that you see in a lot of machine learning environments here (general option), is 维卡. 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.

Java VS Python for NLP 是一个非常重要的选择或必要条件。根据公司/项目的不同,你需要使用其中的一个或另一个,除非你正在领导一个项目,否则通常没有太多的选择。

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

  • TextBlob : < a href = “ http://TextBlob.readthedocs.org/en/dev/”rel = “ noReferrer”> http://TextBlob.readthedocs.org/en/dev/
  • Http://radimrehurek.com/Gensim/
  • 模式 : < a href = “ http://www.clips.ua.ac.be/Pattern”rel = “ norefrer”> http://www.clips.ua.ac.be/Pattern
  • Spacy:: http://spacy.io
  • Orange: http://orange.biolab.si/features/
  • 菠萝 https://github.com/proycon/pynlpl

(详情请参阅 https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)

对于 Java来说,还有很多其他的,但是这里还有另外一个列表:

  • 自由自在的 http://nlp.lsi.upc.edu/Freeling/
  • OpenNLP : < a href = “ http://OpenNLP.apache.org/”rel = “ norefrer”> http://OpenNLP.apache.org/
  • Lingpie : < a href = “ http://alias-i.com/lingtube/”rel = “ norefrer”> http://alias-i.com/LingPipe/
  • Stanford CoreNLP : http://stanfordnlp.github.io/CoreNLP/(为其他语言提供包装器,包括 python)
  • CogComp 自然语言处理程序 : CogComp 自然语言处理程序 : CogComp 自然语言处理程序 = “ https://github.com/CogComp/CogComp-NLP”rel = “ norefrer”> 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 使用的语言是什么,我个人认为,“任何能够提供所需分析/输出的语言”,请参阅 自然语言处理需要学习哪种语言或工具?

下面是最近(2017年)的 NLP 工具: 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.

PythonJava中有一个完整的范围,它再一次取决于首选项和图书馆是否足够用户友好:

Python 中的机器学习库:

  • Sklearn (Scikit-learn): http://scikit-learn.org/stable/
  • Milk: http://luispedro.org/software/milk
  • 译自: 美国《科学》杂志网站(http://www.Scipy.org/rel = “ norefrer”) http://www.Scipy.org/
  • 西亚诺(Theano) http://deeplearning.net/software/Theano/
  • PyML : < a href = “ http://PyML.source/forge.net/”rel = “ norefrer”> http://PyML.sourceforge.net/
  • PyBrain : < a href = “ http://pyBrain.org/”rel = “ norefrer”> http://pyBrain.org/
  • Graphlab Create (商业工具但免费学术许可一年) : < a href = “ https://dato.com/products/Create/”rel = “ norefrer”> https://dato.com/products/Create/

(详情请参阅 https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)

  • 威卡的 http://www.cs.waikato.ac.nz/ml/Weka/index.html
  • 木槌 : < a href = “ http://Mallet.cs.umass.edu/”rel = “ norefrer”> http://Mallet.cs.umass.edu/
  • Mahout : < a href = “ https://Mahout.apache.org/”rel = “ norefrer”> https://Mahout.apache.org/

最近的(2015) 自然语言处理中的深度学习海啸,可能你可以考虑: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

我会避免出于不偏袒/中立的原因列出深度学习工具。


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