10

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

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

我可以使用 Python 来做到这一点,还是 Python 太慢了?最好使用Java吗?

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

4

4 回答 4

18

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

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

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

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

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

于 2011-05-17T13:18:16.440 回答
9

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

  1. 弄清楚什么是困难的操作
  2. 实现它(我的意思是你可以做的最简单、最快的黑客攻击)
  3. 大量数据运行它,看看需要多长时间
  4. 判断它是否太慢

我过去曾这样做过,这确实查看某事是否表现得足以胜任某事的方法。

于 2011-05-17T11:53:35.330 回答
3

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

于 2011-05-17T11:49:40.513 回答
2

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

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

于 2011-05-17T11:51:13.907 回答