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

Jin*_*ing 111 python java nlp

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

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

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

更新

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

alv*_*vas 132

用于NLP的Java与Python是非常偏好或必要的.根据公司/项目,您需要使用其中一个,除非您正在进行项目,否则通常没有太多选择.

除了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的语言,我个人会说,"任何能够为您提供所需分析/输出的语言 ",请参阅哪种语言或工具可以学习自然语言处理?

这是最近(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年)NLP的深度学习海啸,您可以考虑:https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

我将避免列出非偏袒/中立性的深度学习工具.


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


Nat*_*yne 42

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

蟒蛇

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

还有一些优秀的代码,您可以查看源自Google基于Python的Natural Language Toolkit项目.您可以在GitHub上找到该代码的链接.

Java的

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

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

  • 很棒的答案.我真的不明白为什么这些问题在这里被低估了.+1 (9认同)
  • 我完全同意.提出的问题是一般性的.也就是说,这些正是我经常遇到的问题类型,特别是当我不熟悉某个地区时. (8认同)
  • @NathanielPayne:非常感谢您的建议.这给了我一些启动NLP的指南. (2认同)