2011-05-17 32 views
10

我很快就要开始一个新项目,在那里我要做大量的文本处理任务,如搜索,分类/分类,聚类,等等。用于文本处理(文本挖掘,信息检索,自然语言处理)的Python或Java

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

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

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

回答

3

只写它,在节目最大的败笔人是不成熟的优化。在一个项目上工作,写出来并让它工作。然后返回并修复错误并确保其优化。将会有一些人对x和y的速度感兴趣,y比x好,但在一天结束时它只是一种语言。它不是什么语言,但它是如何做到的。

2

这不是你要评估的语言,但对于集群框架和应用服务器,数据存储/检索等可用于语言。

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

+0

我从来没有使用的Jython。我读过它比Python慢​​。但是我想通过将代码的关键部分转换为java可能会比Python更快?那是对的吗? – kga 2011-05-17 12:57:52

+0

@ user757256:是的,Jython是稍微慢一点,是更多的内存大户。破解一些原型,与CPython和Jython进行基准测试,然后查看您可以优化的内容。再次,只有在评估了可以使用的库之后,才能做出选择。 – 2011-05-17 13:28:20

9

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

  1. 搞清楚什么将是一个困难的操作
  2. 实现这(我的意思是,你可以使工作简单,最快捷的黑客)
  3. 很多运行它数据,看看需要多长时间
  4. 图,如果它太慢

我已经在过去做到了这一点,这真的的方式来看看某件事是否表现得够好。

17

两者都不错。 Java在文本处理方面有很多的热潮。 Stanford的文字处理系统,OpenNLPUIMA,并且GATE似乎是大玩家(我知道我错过了一些)。几分钟后,您就可以在大型语料库上直接运行StanfordNLP模块。但是,它有很大的内存要求(当我使用它时,大约需要3 GB)。

NLTK,GensimPattern,和许多其他Python模块都非常擅长文本处理。他们的内存使用情况和性能非常合理。

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

我NLTK了解到,和Python已经极大地帮助我减少了开发时间,所以本人认为你给了一枪第一。他们也有一个非常有用的邮件列表,我建议你加入。

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

+1

我认为这是用于项目的NLP端软件包的一个很好的概述。另一个需要考虑的是机器学习方面。虽然我只熟悉Java库 - WEKA,槌,阿帕奇亨利马乌。 – Thien 2011-06-11 21:44:14