大规模机器学习 - Python还是Java?

时间:2012-03-15 13:41:21

标签: java python machine-learning nltk mahout

我目前正着手开展一个涉及抓取和处理大量数据(数百场演出)的项目,并挖掘它们以提取结构化数据,命名实体识别,重复数据删除,分类等。

我熟悉Java和Python世界的ML工具:Lingpipe,Mahout,NLTK等。但是,当它归结为选择这样一个大规模问题的平台时 - 我缺乏足够的经验来决定Java或Python。

我知道这听起来像一个模糊的问题,但我正在寻找关于选择Java或Python的一般建议。 JVM提供了比Python更好的性能(?),但像Lingpipe等库是否与Python生态系统相匹配?如果我使用这个Python,那么扩展它并在多台机器上管理它会有多容易。

我应该选择哪一个?为什么?

3 个答案:

答案 0 :(得分:18)

随着Apache的出色表现,像Lucene / Solr / Nutch for Search,Mahout for Big Data Machine Learning,Hadoop for Map Reduce,OpenNLP for NLP,很多NoSQL东西。最好的部分是大"我"它代表了集成,这些产品可以很好地相互集成,当然在大多数情况下它们(这些产品)相互补充。

Python也很棒但是如果你从ASF考虑上面那么我会像Sean Owen一样使用Java。 Python将始终可用于上述,但大多数情况下像添加,而不是实际的东西。例如,您可以使用Streaming等使用Python来执行Hadoop。

我部分从C ++切换到Java,以便利用一些非常流行的Apache产品,如Lucene,Solr& OpenNLP以及其他流行的开源NoSQL Java产品,如Neo4j& OrientDB。

答案 1 :(得分:11)

我认为Java的一大特色就是Hadoop。如果你真的意味着大规模,你会希望能够使用类似的东西。一般来说,Java具有性能优势,并且可以使用更多库。所以:Java。

答案 2 :(得分:5)

如果你正在寻找适合ML任务的NoSQL数据库,那么Neo4J是更准备(相对)并且能够处理BigData的产品之一,它是JAVA原生的,但带有一个漂亮的REST API开箱即用因此可以与您选择的平台集成。 JAVA将为您提供性能优势。