2014-04-07 43 views
89

我想知道哪种编程语言对自然语言处理更好。 Java or Python?我发现了很多关于它的问题和答案。但我仍然在选择使用哪一个方面失败。用于自然语言处理的Java或Python

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

但是,如果我做一些文字处理和信息提取从非结构化数据(只是自由形成的纯英文文本),以获得一些有用的信息,什么是最好的选择吗? Java还是Python?合适的库?

更新

我想要做的是提取非结构化数据有用的产品信息(如用户做出关于手机或笔记本电脑,用不是很标准的英语语言不同形式的广告)

+39

我讨厌这类问题这里不欢迎你在SO上。我认为其目的是为了防止圣战,但这对IMO的内容有所贡献。 – L0j1k

+1

如果有人说“什么是领先的Java和Python NLP库及其相对优势?”也许这解决了它?答案随时间变化,但我也发现这样的问题非常有用。 –

+3

我也希望这些问题在SO上受到欢迎。我最近试图调查Python和R的NLP优势,并立即被击落。对于那些试图用正确的语言来设计他们的项目的人来说,这不是一个简单的例子 – Ksofiac

回答

37

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

的Python

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

还有一些优秀的代码,您可以查找来自基于Python的Google Natural Language Toolkit项目。您可以在这里找到该代码的链接on GitHub

的Java

看是斯坦福大学的Natural Language Processing Group的第一个地方。所有分发的软件都是用Java编写的。所有最近的发行版都需要Oracle Java 6+或OpenJDK 7+。分发包包括用于命令行调用的组件,jar文件,Java API和源代码。

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

+5

真棒回答。我真的不明白为什么这些问题在这里被忽略。 +1 – L0j1k

+7

我完全同意。被问到的问题是一般性的。这就是说,这些正是我经常发现自己面临的问题类型,特别是当我刚到一个地区时。 –

+1

就基于Java的库和工具而言,您可能会看到的另一个伟大的是LingPipe。 http://alias-i.com/lingpipe/ –

108

Java与Python for NLP非常重要或必须。取决于公司/项目,您需要使用其中一个或另一个,除非您正在领导项目,否则通常没有多少选择。

NLTK(www.nltk。ORG),实际上有其他的库文本处理python

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

对于Java,还有其他的是公吨,但这里的另一个列表:

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

门VS UIMA VS OpenNLP一个有用的对比,看看https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

如果你不确定,这是去NLP的语言,我个人说,“这会给你所希望的解析/输出任何语言”,看到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管道。

有一个整体范围在PythonJava,并再次就看个人喜好和库是否人性化不够:

在Python机器学习库:

(详细参见https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search


随着近期(2015年)deep learning tsunami in NLP,可能是你可以考虑:https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

我会避免上市深度学习工具,在不偏袒/中立。这也要求NLP/ML工具


其他问题#1:

+1

感谢您提供大量有关NLP和ML工具的信息 –