Java还是Python用于自然语言处理

119 投票
2 回答
73514 浏览
提问于 2025-04-18 01:40

我想知道哪个编程语言更适合处理自然语言,Java还是Python?我看到很多相关的问题和答案,但还是不知道该选哪个。

另外,我想了解在Java中应该使用哪个自然语言处理库,因为有很多库可供选择(比如LingPipe、GATE、OpenNLP、StanfordNLP)。而在Python中,大多数程序员推荐使用NLTK。

但是如果我想从非结构化数据(就是随意写的普通英语文本)中提取一些有用的信息,哪个语言更好呢?Java还是Python?用哪个库比较合适?

更新

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

2 个回答

42

这个问题很开放。不过,既然不想只选一个,下面我会根据你想用的编程语言来比较一下(因为这两种语言都有不错的库可以使用)。

Python

如果你选择Python,首先要看看的是Python自然语言工具包(NLTK)。正如他们的介绍所说,NLTK是一个很棒的平台,可以用来构建处理人类语言数据的Python程序。它提供了简单易用的接口,可以访问超过50个语料库和词汇资源,比如WordNet,还有一系列文本处理库,能帮你进行分类、分词、词干提取、标记、解析和语义推理等操作。

另外,还有一些很棒的代码,源自谷歌的自然语言工具包项目,这些代码是基于Python的。你可以在这里找到这些代码的链接在GitHub上

Java

如果你选择Java,首先要看看斯坦福大学的自然语言处理小组。他们那里分发的所有软件都是用Java写的。最近的版本需要Oracle Java 6以上或OpenJDK 7以上。分发包里包括命令行调用的组件、jar文件、Java API和源代码。

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

144

在自然语言处理(NLP)方面,选择Java还是Python主要看个人的喜好或者项目的需求。不同的公司和项目可能会要求使用其中一种语言,通常情况下,除非你是项目的负责人,否则选择的余地不大。

除了NLTK(www.nltk.org),Python还有其他一些文本处理的库:

(想了解更多,可以查看 这个链接

对于Java,也有很多其他的库,以下是一些例子:

这是一个关于基本字符串处理的不错比较,可以查看 这个链接

关于GATE、UIMA和OpenNLP的有用比较,可以查看 这个链接

如果你不确定选择哪种语言来进行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中的机器学习库:

(想了解更多,可以查看 这个链接


随着最近(2015年)深度学习在NLP领域的浪潮,你可能会考虑: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

我会避免列出深度学习工具,以保持中立。


其他Stackoverflow上也询问NLP/ML工具的问题:

撰写回答