用于文本处理的 Python 或 Java(文本挖掘、信息检索、自然语言处理)[关闭]

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

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

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

我从未使用过 Jython。我读到它比 Python 慢。但我想通过将代码的关键部分转换为 java 可能会比 Python 更快?对吗? @user757256:是的,jython 稍微慢一些,而且更需要内存。修改一些原型,使用 CPython 和 Jython 进行基准测试,然后看看可以优化什么。同样,只有在评估您可以使用哪些库之后才能做出选择。

以上是关于用于文本处理的 Python 或 Java(文本挖掘、信息检索、自然语言处理)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用于读取图像内文本的最佳 Python/Ruby 库 [关闭]

用于文本分析的算法或库,特别是:主要词、跨文本的短语和文本集合

python处理文本

十分钟学习自然语言处理概述(内含送书中奖名单)

用于在硬盘中创建文本文件的 html 或 java 脚本代码

Python中是不是有用于纯文本文件的本机模板系统?