2011-05-17 74 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