Java 或 Python for Natural Language Processing [已关闭]

2022-08-31 09:11:31

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

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

但是,如果我要从非结构化数据(只是自由形式的纯英语文本)中进行一些文本处理或信息提取以获得一些有用的信息,那么最好的选择是什么?Java还是Python?合适的图书馆?

更新

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


答案 1

Java vs 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

GATE vs UIMA vs 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


除了语言处理工具之外,您还需要机器学习工具才能合并到管道中。NLP

和 中有一个完整的范围,这又取决于首选项以及库是否足够用户友好:PythonJava

Python中的机器学习库:

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


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

我将避免出于非偏袒/中立而列出深度学习工具。


其他堆栈溢出问题也要求使用 NLP/ML 工具:


答案 2

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

就Python而言,你应该首先关注的是Python自然语言工具包。正如他们在描述中指出的那样,NLTK是构建Python程序以处理人类语言数据的领先平台。它为 50 多个语料库和词法资源(如 WordNet)提供了易于使用的接口,以及一套用于分类、标记化、词干分解、标记、解析和语义推理的文本处理库。

您还可以查找一些出色的代码,这些代码源自Google基于Python的自然语言工具包项目。您可以在GitHub上找到该代码的链接。

爪哇岛

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

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