【问题标题】:Python or Java for text processing (text mining, information retrieval, natural language processing) [closed]用于文本处理的 Python 或 Java(文本挖掘、信息检索、自然语言处理)[关闭]
【发布时间】:2011-08-27 04:21:32
【问题描述】:

我即将开始一个新项目,我将在其中执行大量文本处理任务,例如搜索、分类/分类、聚类等。

需要处理大量文件;可能有数百万份文件。在初始处理之后,它还必须能够每天更新多个新文档。

我可以使用 Python 来执行此操作,还是 Python 太慢了?最好用Java吗?

如果可能的话,我更喜欢 Python,因为这是我最近一直在使用的。另外,我会更快地完成编码部分。但这一切都取决于 Python 的速度。我使用 Python 完成了一些只有几千个文档的小规模文本处理任务,但我不确定它的扩展效果如何。

【问题讨论】:

    标签: java python nlp information-retrieval text-mining


    【解决方案1】:

    两者都很好。 Java 在文本处理方面有很多精力。 Stanford 的文本处理系统、OpenNLPUIMAGATE 似乎是大玩家(我知道我缺少一些)。玩了几分钟后,您就可以在大型语料库上运行 StanfordNLP 模块。但是,它有很大的内存需求(我使用它时需要 3 GB 左右)。

    NLTKGensimPattern等很多Python模块都非常擅长文本处理。它们的内存使用和性能非常合理。

    Python 可以扩展,因为文本处理是一个非常容易扩展的问题。在解析/标记/分块/提取文档时,您可以非常轻松地使用多处理。一旦你把你的文本变成任何类型的特征向量,那么你就可以使用 numpy 数组了,我们都知道 numpy 有多棒......

    我是通过 NLTK 学习的,Python 极大地帮助我缩短了开发时间,所以我认为你先试一试。他们也有一个非常有用的邮件列表,我建议你加入。

    如果您有自定义脚本,您可能想看看它们在PyPy 下的表现如何。

    【讨论】:

    • 我认为这是用于项目 NLP 方面的包的一个很好的概述。要考虑的另一件事是机器学习方面。虽然我只熟悉 Java 库 - WEKA、MALLET、Apache Mahout。
    【解决方案2】:

    不尝试就很难回答这样的问题。那你为什么不呢

    1. 弄清楚什么是困难的操作
    2. 实施(我的意思是你能做到的最简单、最快捷的 hack)
    3. 大量数据运行它,看看需要多长时间
    4. 判断是不是太慢了

    我过去曾这样做过,这确实是查看某项性能是否足以胜任某项的方法。

    【讨论】:

      【解决方案3】:

      随便写吧,人家编程最大的缺陷就是过早的优化。做一个项目,把它写出来,让它发挥作用。然后返回并修复错误并确保其优化。会有很多人喋喋不休地谈论 x 与 y 的速度,并且 y 比 x 好,但归根结底,它只是一种语言。不是语言是什么,而是它是如何工作的。

      【讨论】:

        【解决方案4】:

        您必须评估的不是语言,而是适用于该语言的用于集群、数据存储/检索等的框架和应用服务器。

        您可以使用 jython 并使用所有 java 企业技术来实现高负载系统并使用 python 进行文本解析。

        【讨论】:

        • 我从未使用过 Jython。我读到它比 Python 慢。但我想通过将代码的关键部分转换为 java 可能会比 Python 更快?对吗?
        • @user757256:是的,jython 稍微慢一些,而且更需要内存。修改一些原型,使用 CPython 和 Jython 进行基准测试,然后看看可以优化什么。同样,只有在评估您可以使用哪些库之后才能做出选择。
        猜你喜欢
        • 2012-02-24
        • 2019-06-28
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 2012-08-07
        相关资源
        最近更新 更多