一個主修語言學的女生想要學一些計算機語言和編程,學什麼比較好?

主修語言學,也想要繼續深造下去。
了解到大數據時代,語言學和計算機之間關係很密切。
對編程什麼一概不懂。想要從頭開始學。
希望大家可以略微指點一二。

在國外大學求學。所以希望大家可以推薦一些原版教材。
謝謝


碩士讀的是NLP(Natural Language Processing, 或者叫Computational Linguistic對你會更親切)組,但是畢業設計是在英語系做的,所以接觸過一些語言學的人。

純語言學轉NLP這種事太屢見不鮮了,樓主莫擔心,首先心理上要有信心,你不是一個人,這是很常見的想法。

其次,我當時在英語系的合作模式大概是,由語言學家提出一個假設,並提供語料庫,我們NLP的人去編程實現,利用NLP、Machine Learning的方法在大語料(也就是你所謂的大數據)尋找證據去支持語言學家的論點。比如當時我們語言學的一個教授提出來一個假設,說是來自俄羅斯的英語學習者,由於母語的影響,會更多的使用介詞短語(PP)前置這樣的用法;於是我就哼哧哼哧的寫了一個程序(就像很多人說的,我這個選擇用python寫的),拿一個Parser(語法分析器,就是計算機自動對一句句子生成語法分析,i.e. get syntactic structure)對一個大語料庫中的所有來自俄羅斯的英語學習者的習作進行語法分析,並且統計其中PP前置的比例,從而證明語言學家的觀點,然後就可以發表了。

所以回到問題上來,我個人不建議盲目的去單獨學某種計算機技能,最好是結合你手頭的linguistic topic,從NLP的思維看看是否能做任何事情,然後詢問有經驗的人(你的導師),然後一步步就明白了你需要學習什麼,python、統計學、機器學習、NLP,這每一塊都是非常複雜的體系,你一時半會不可能完全掌握,嘗試去專門學習某一塊並嘗試掌握會容易產生挫敗感;從你的語言學項目開始,在有經驗的人的指導下,把計算機編程當一個工具,解決你的語言學問題,用多少學多少,這是我看到的大多數語言學文科學生轉NLP走的道路,也是我給你的建議。

如何入門呢?推薦以下這些資源給樓主和所有對NLP有興趣的人:

1、Coursera NLP(Coursera.org),當年Coursera剛創立的時候的明星課程,由Stanford的兩位教授講述,比較偏計算機演算法

2、入門教材的話,我上過所有NLP的課,都會推薦這本書:Speech and Language Processing (Speech and Language Processing, 2nd Edition: Daniel Jurafsky, James H. Martin: 9780131873216: Amazon.com: Books) 比較詳細,有演算法,也有很多Linguistic的基礎

3、還有就是吳軍博士的《數學之美》這本書,雖然題目是數學之美,但其中很多都是數學、統計在NLP方面的應用,非常科普,建議所有非NLP的人都可以讀讀


——————————2017/9/5更新————————————

偶然翻到了這個答案,發現自己以前的回答還真是挺幼稚的,錯別字和病句也很多……

雖然仍然有很多學不懂的地方,但是現在仍然在堅持學。寫代碼已經成為了日常研究的一部分,也憑藉這一點優勢,今年申PhD拿到了不少很好的offer。

感覺這幾年CS的發展,已經深刻地改變了人文社科的研究,以後期待見到更多有意思的跨學科成果。

————————————原答案————————————

我是來鼓勵鼓勵題主的,因為我本科只修過一門水水的數學課,沒學過什麼計算機。最後通過Coursera、Codecademy和自己看書學會了一點編程,不一定是很高級的技巧,起碼能夠解決研究中遇到的問題。希望我的經歷能夠給題主一些參考。

我本科英語系的,研究生還在英語系,自己學了一點編程,並沒有想像中的難,只要先學會了一門語言,其他的會很快上手。感覺語言學會用到的編程語言就是Python和R,有些做語音的還會用到Matlab和Praat。

我學編程是去年5月開始的,本科即將畢業,下學期要讀研,中間這段時間比較無聊,於是就想學點好玩又實用的東西。剛好在豆瓣、果殼看到了一下文科生學編程的經歷,打了點雞血,於是就自己呼哧呼哧地學了起來。到現在基本能夠把學到的編程技巧運用到語言學研究方面了。當然,語言學會用到的編程技巧還是非常簡單的,主要就是詞性標註、關鍵詞提取、統計分析之類的,用心學肯定可以上手的。

我最開始學的是Python,跟的是Coursera上的《人人學編程》這門課,這門課有本配套教材,把教材看完,把上面練習做完,就會對Python的代碼風格和數據結構有個大致了解。為了練手,我還把Codecademy上的練習給做完了,這樣Python基本就能用了。接下來就可以看Python自然語言處理 (豆瓣)(這本確實對我來說有點難度,我還沒讀完……)一般需要用那個模塊的話,就去讀哪一章,然後把上面代碼敲一遍,這時候就有點感覺了。當然,實際幹活的時候肯定會遇到很多問題的,這是就要靠幫助文檔和一些程序員寫的博客了。
Python用來研究語音學一樣很有用,Coursera上有幾門用Python來做Audio Processing的課,老師已經把代碼傳到GitHub了,看視頻自己熟悉一下,再了解一下IPython、NumPy、SciPy的用法,能解決一些語音問題。

另外一門很有用的語言是R。就我最近讀到的很多國外語言學論文來看,越來越多研究者使用R來分析數據,然後使用ggplot2來作圖。推薦R語言實戰 (豆瓣), Quantitative Corpus Linguistics with R (豆瓣),Statistics for Linguistics with R (豆瓣)這三本書,後兩本是專門針對語言學的。因為有Python的基礎,所以我學R並沒有遇到太大的困難,可以去DataCamp上練習幾次,基本上就能用R來進行數據分析了。最主要的問題還是數理統計方面的,必須惡補統計學知識,不然的話,學了R也沒什麼用。

所以,主要有以下一些體會:
1. 光讀教材是沒有用的,必須自己敲一邊代碼才能學會編程。很多看書看不懂的問題,運行代碼後就豁然開朗了。
2. 不要著急,慢慢來,對自己最後能夠達到的水平要有合理的期待。由於沒有計算機和數學基礎,肯定會有非常多的東西弄不懂,這時就要多上知乎或程序員博客,或者查閱相關書籍來解決問題。不懂的問題先放一邊,有些問題在寫代碼的過程中慢慢就會懂了。當然,有些問題是估計這輩子也沒機會弄懂了,能夠解決研究問題就行。
3. 有時間就補充一下相關知識。比如上面說的《數學之美》之類的都很不錯。我受益最大的書是這本:計算機科學概論(第11版) (豆瓣)。這是本導論型的教材,有英文版的,看完後對演算法、數據結構會有個大概的理解。編碼 (豆瓣)和世界是數字的 (豆瓣)都是很不錯的,適合我這種外行。不過有時間還是看一下概率論和數理統計、離散數學之類的,能看多少看多少。

祝題主和其他語言學專業的學生學編程順利!


目測一大堆Python粉正在趕來


真想學編程的話,學學Python和基礎的Linux就好,偶爾寫點小script處理語料不求人就夠了。但再往深了就不用強求了,畢竟NLP的主要難點在於數學和統計,文科生可能真的很難補上(理科生也有渣渣比如我),倒不如好好學一下TEI啊XML什麼的,為corpus linguistics做點貢獻,我們NLP狗都會感謝你的。


python
有nltk自然語言處理工具(雖然我估計你用不上),但是單純python也是極好的


當年學《編譯原理》的時候教材介紹過喬姆斯基。題主有興趣可以從這位大神作為切入點培養興趣。
不懂語言學,但覺得詞法、語法、語義分析這些編譯原理相關內容應該比較適合語言學學生跨界。


--------2017.5.7---更新分界線-------
騷瑞騷瑞 曠了這麼久

來彙報情況辣
評論里有小同學問申的哪裡?A:申的瑞典烏普薩拉大學的Language Technology專業碩士,要求是本科學計算機的或者語言學的或者兩者都學了的,雅思6.5

課程內容還是比較豐富的,編程是基礎,另有數學,語義分析,機器翻譯,信息獲取,NLP的課,最喜歡交教nlp的Joakim了!能學到不少東西

但是壓力挺大,lab很多project也難,關鍵是做project的時候會遇到之前課上老師只提了一嘴的東西,燃鵝要自己用python實現出來,滿世界瘋找解釋,有種自己是煞筆的深深絕望感

-----------------------原答----------------------
跟樓樓一樣,本科英語。四年沒學過一點數學和計算機!
過倆月去讀研,專業是Computioanl Linguistic,略惶恐。
所以把學校往年的課表和課程大綱都搞來了,看了看主要的還是要求學Python。
閑來無事就在IMOOC和CodeCademy上學了一段時間,入門階段基本學完,但是只是按照教程來,自己還是不太會運用,不造怎麼自己編。繼續努力!~

去學校上課了以後,老師還有啥推薦,再拖來共享~


謝邀,作為computational linguistic專業的學生,表示一直用matlab和mathematic… 不過鄙人本科學的電子信息,感覺computational linguistic類別太大了,做NLP所用的語言和做speech processing很多情況下都是不一樣的。


目測一堆Python粉絲要信誓旦旦的說自然語言了。。。
一個白富美學什麼編程,學個UI都比這個強。千萬別入我們這行啊。


語言學老師推薦。


必需HTML啊,樓上都怎麼想的


我跟樓主很像。
沒有一點計算機和數學基礎,英語專業的,現在新工作是資源管理,需要用perl處理文本,領導讓學perl,這幾天看的我暈暈乎乎的,概念性的東西還好懂,就是不知道真正用起來怎麼用,還是很糊塗的狀態,看了這些建議感覺真的很受用,謝謝!


那必須是世界上最好的編程語言:PHP啊!


應用語言學


python是一門優雅的語言,適合女孩。
建議到 http://codecademy.com 做入門學習


NLP的坑大,一般BS階段不會接觸太多,MS也是搞前人東西吧。所以在這個問題上我傾向於關係不大。

編程的話: The C Programming Language 2nd 我覺得如果準備稍微深入學一點的話,還是學C

另外入門Python或者JavaScript+HTML做做網頁?這個不需要書看網上資料吧,推薦 計蒜客 jisuanke(原泡麵吧)或者codeacademy

你應該不會想去碰硬體部分? 如果對怎麼造一個計算機有興趣的話可以看 Code The Hidden Language, 教科書難度的話進階是 Intro to Computing System

這些都看完是大一大二CSEE生水準吧。總之先學了用,自己做一個網頁啦,弄點Python啦。NLP是很以後的東西了。(2333 大言不慚啊,實際上我對於NLP幾乎什麼都不懂


Python,簡單易學好上手,不用考慮內存分配。


題主讓我想到了Matrix67……

入Python的坑吧,很容易找到和你的專業方向有聯繫的工具,另外Python也是一門對女生友好的程序語言

至於學習方式……學程序語言不靠看書,在線教程和官方文檔是極好的


推薦閱讀:

設計RPC框架時,客戶端調用出錯是直接拋出異常好,還是返回errcode好?
我國的 IT 培訓機構是否坑?
程序員所積累的編程知識在十年後將有多少變得沒用?
為什麼程序語言會存在解釋型或編譯型的限制?
零基礎如何迅速學習前端?

TAG:編程 | 自然語言處理 | 編程學習 | 個人諮詢 | 自然語言 |