對於學自然語言處理方向的學生來說,學 Perl 好還是學 Python 好?理由是什麼?


建議選擇 Python 吧,日子會好過些。

Python 的 Natural Language Toolkit [1] 不錯。有本 Natural Language Processing with PythonAnalyzing Text with the Natural Language Toolkit [2] 可以看看,寫得很淺。學 Perl 的曲線比較陡峭[3],而且其實兩者到後來就觸類旁通了。人生苦短,莫入邪教(當然後期研究宗教現象學就是另外一回事啦)。

[1] http://www.nltk.org/

[2] http://shop.oreilly.com/product/9780596516499.do

[3] http://www.neverworkintheory.org/?p=197


我支持 Python,庫多,至少我見過有機器學習的庫,有大量數學庫。Perl 那邊情況不清楚,不過 Perl 最初是為系統管理、文本處理之類非常 UNIX 風格的任務設計的。

另外,我說 Python 比 Perl 易學沒人會反對吧?


python和R


這兩種語言的能力應當差不多,所以找一個庫好用的。


我覺得要看看具體從事「什麼樣的自然語言處理了」,如果只是單純的用正則表達式挖掘一些文本中的實體(name entity)或者特定結構的話(比如一個網頁中的天氣預報文字結構片段),那麼Perl比Python有過之而無不及,因為Perl的正則表達式真的很高效強大。但是,如果要進行更加複雜的自然語言處理,比如,涉及到「詞形還原(symbolic -&> symbol)」,「同義詞」,甚至「語義網」這類的處理,那麼Python是最佳選擇,因為他有諸如NLTK這樣的強大庫。


perl和python都接觸了,如果是文本處理的話,perl文本處理沒得說,python寫得偶蛋疼。

不過perl的話,看其他人的代碼(很多沒遵循best practice)很蛋疼,python的縮進使可讀性增加很多。python出了python3,代碼還是和python2有細微差別的。perl(用Acme::Pythonic模塊)也可以像python那樣寫代碼。


coursera上有Michael Collins的Natural Language Processing課程,作業就是用python實現演算法,建議一看~

Coursera.org


我一直都用的是perl。perl可以寫得太隨意了,不容易看懂。不過一旦熟悉了,就可以用的很強。


Perl和Python都接觸了點,以前工作中常用Perl做報表相關的統計,很方便,其正則強大好用,其他的方面沒有怎麼接觸,但是還是去看了些cpan上模塊,說真的,屬於自虐。Python代碼清晰,如果不是什麼高級的用法,還有一兩眼就能看出想做什麼。


我有這兩本書,如果你要我可以給你:

  • Python自然語言處理 http://book.douban.com/subject/5336893/
  • 自然語言處理綜論 http://book.douban.com/subject/1390499/

如果兩種語言都沒有基礎,自然用 Python 更好。其實用什麼語言都無所謂,關鍵是掌握相關的概念和演算法。


個人覺得python啦 perl如何構建可讀性好的代碼?


更傾向perl,perl的可寫性很對胃口。尤其是正則的便利非其他語言可比。我覺得自然語言理解是業務密集的領域,那些工程化的特性並沒有那麼重要。相比較python,perl更適合快速迭代,我用perl寫了個原型,代碼量500行以內,不引入任何三方包.就簡單的實現中文切詞,仿句,推理,主動學習。網上的意見很多傾向於python三方庫的成熟,我覺得做自然語言理解,那些反而庫增加了學習成本。


當年寫做研究的時候用過prolog, lisp , scheme,perl,c等等。最好用的是perl,最神奇的是lisp和scheme,當時沒接觸python是一個遺憾。


沒有編程基礎的入門可難啊,perl


Python 和 Perl 我都寫過,但是我覺得python可以寫出很易懂的代碼,Perl 就不容易做到了。

你如果要寫規模大一點的、一段時間後自己還能看懂的,還是用Python吧。


python吧,簡單好用。


perl沒接觸過,python比較容易入門,庫的支持也很全面。而且python的c擴展比較方便,萬一對性能有要求,問題也很容易解決。


python的NLTK看了一點,覺得可以!Oreilly有這方面書不妨可以看看,其實也可以歸結為Perl和Python的設計哲學,Python崇尚只用一種方法去解決問題,而Perl就多了去了,況且在理解上覺得Python更好理解一些,老實說我看到Perl那些$ die之類的就覺得不美觀。Python是我喜歡的。


為啥沒人用java?


在這兩個中間選的話,我建議Perl 。 做自然語言處理的應該會喜歡擺弄語言吧。 Perl 的表現力這麼豐富的說。


推薦閱讀:

學習perl兩個月感覺還是什麼都不會,怎麼辦?
如何用python實現行列互換?
Perl、PHP、Python、Ruby對於入門的Linux運維來說,哪個更易學?
Ruby、Perl、Python、Lua等語言相互之間都有哪些異同點?

TAG:Python | 自然語言處理 | Perl |