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

2024-06-05 22:36:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道哪种编程语言更适合自然语言处理。Java或Python?我找到了很多关于它的问题和答案。但我还是不知道该用哪一个。

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

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

已更新

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


Tags: 数据答案文本信息nlp格式java编程语言
2条回答

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

Python

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

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

Java

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

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

Java与Python对于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与UIMA与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

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


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

相关问题 更多 >