Python还是Java用于文本处理(文本挖掘、信息检索、自然语言处理)

10 投票
4 回答
10636 浏览
提问于 2025-04-16 17:48

我马上要开始一个新项目,这个项目需要处理很多文本,比如搜索、分类、聚类等等。

我需要处理的文件数量非常庞大,可能有几百万个文档。在最初处理完之后,还需要每天更新,添加多个新文档。

我可以用Python来做这个吗?还是说Python太慢了?用Java会更好吗?

如果可以的话,我更喜欢用Python,因为我最近一直在用这个。而且用Python写代码会快很多。不过这都得看Python的速度。我之前用Python处理过一些小规模的文本任务,只有几千个文档,但我不确定它在处理大规模数据时表现如何。

4 个回答

3

直接写代码吧,很多程序员最大的错误就是过早地去优化代码。在做一个项目的时候,先把它写出来,让它能正常运行。然后再回过头来修复错误,确保代码是优化过的。会有很多人争论哪个速度更快,x和y哪个更好,但归根结底,这只是编程语言的问题。关键不在于语言本身,而在于它是怎么工作的。

9

像这样的问题很难回答,除非你自己去尝试。那么你为什么不试试呢?

  1. 想想看,什么操作会比较复杂
  2. 把这个操作实现出来(我指的是最简单、最快速的办法,让它能工作)
  3. 用大量数据来运行它,看看需要多长时间
  4. 判断一下它是不是太慢了

我以前也这样做过,这确实是检查某个东西性能是否足够好的好方法。

18

这两种语言都不错。Java在文本处理方面有很多优势。像斯坦福的文本处理系统、OpenNLPUIMAGATE这些都是比较重要的工具(我知道我可能漏掉了一些)。你可以在几分钟内玩弄一下,就能在大规模文本上运行斯坦福的NLP模块。不过,它对内存的要求很高(我用的时候大约需要3GB的内存)。

而Python方面,像NLTKGensimPattern以及其他很多模块在文本处理上也非常出色。它们的内存使用和性能都很合理。

Python在处理文本时表现得很灵活,因为文本处理问题很容易扩展。你可以很方便地使用多进程来解析、标记、分块或提取文档。一旦把文本转换成某种特征向量,就可以使用numpy数组,而大家都知道numpy非常强大……

我最开始是用NLTK学习的,Python大大减少了我的开发时间,所以我建议你先试试这个。它们还有一个非常有用的邮件列表,我建议你加入。

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

撰写回答