一. 什么是NLP?
自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。自然語(yǔ)言處理是一門(mén)融語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。因此,這一領(lǐng)域的研究將涉及自然語(yǔ)言,即人們?nèi)粘J褂玫恼Z(yǔ)言,所以它與語(yǔ)言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。自然語(yǔ)言處理并不是一般地研究自然語(yǔ)言,而在于研制能有效地實(shí)現(xiàn)自然語(yǔ)言通信的計(jì)算機(jī)系統(tǒng),特別是其中的軟件系統(tǒng)。因而它是計(jì)算機(jī)科學(xué)的一部分。
自然語(yǔ)言處理,即實(shí)現(xiàn)人機(jī)間自然語(yǔ)言通信,實(shí)現(xiàn)自然語(yǔ)言理解和自然語(yǔ)言生成是十分困難的。造成困難的根本原因是自然語(yǔ)言文本和對(duì)話的各個(gè)層次上廣泛存在的各種各樣的歧義性或多義性。用自然語(yǔ)言與計(jì)算機(jī)進(jìn)行通信,這是人們長(zhǎng)期以來(lái)所追求的。因?yàn)樗扔忻黠@的實(shí)際意義,同時(shí)也有重要的理論意義:人們可以用自己最習(xí)慣的語(yǔ)言來(lái)使用計(jì)算機(jī),而無(wú)需再花大量的時(shí)間和精力去學(xué)習(xí)不很自然和習(xí)慣的各種計(jì)算機(jī)語(yǔ)言;人們也可通過(guò)它進(jìn)一步了解人類的語(yǔ)言能力和智能的機(jī)制。
能力模型,通常是基于語(yǔ)言學(xué)規(guī)則的模型,建立在人腦中先天存在語(yǔ)法通則這一假設(shè)的基礎(chǔ)上,認(rèn)為語(yǔ)言是人腦的語(yǔ)言能力推導(dǎo)出來(lái)的,建立語(yǔ)言模型就是通過(guò)建立人工編輯的語(yǔ)言規(guī)則集來(lái)模擬這種先天的語(yǔ)言能力。又稱“理性主義的”語(yǔ)言模型。
應(yīng)用模型,根據(jù)不同的語(yǔ)言處理應(yīng)用而建立的特定語(yǔ)言模型,通常是基于統(tǒng)計(jì)的模型。又稱“經(jīng)驗(yàn)主義的”語(yǔ)言模型,使用大規(guī)模真實(shí)語(yǔ)料庫(kù)中獲得語(yǔ)言各級(jí)語(yǔ)言單位上的統(tǒng)計(jì)信息,依據(jù)較低級(jí)語(yǔ)言單位上的統(tǒng)計(jì)信息運(yùn)用相關(guān)的統(tǒng)計(jì)推理技術(shù)計(jì)算較高級(jí)語(yǔ)言單位上的統(tǒng)計(jì)信息。
?
自然語(yǔ)言處理的基本架構(gòu):分詞=>詞性標(biāo)注=>Parser
1、分詞
詞是最小的能夠獨(dú)立活動(dòng)的有意義的語(yǔ)言成分,英文單詞之間是以空格作為自然分界符的,而漢語(yǔ)是以字為基本的書(shū)寫(xiě)單位,詞語(yǔ)之間沒(méi)有明顯的區(qū)分標(biāo)記,因此,中文詞語(yǔ)分析是中文信息處理的基礎(chǔ)與關(guān)鍵。
中文分詞技術(shù)可分為三大類:基于字典、詞庫(kù)匹配的分詞方法;基于詞頻度統(tǒng)計(jì)的分詞方法和基于知識(shí)理解的分詞方法。
2、詞性標(biāo)注(Part-of-Speech tagging 或POS tagging),又稱詞類標(biāo)注或者簡(jiǎn)稱標(biāo)注,是指為分詞結(jié)果中的每個(gè)單詞標(biāo)注一個(gè)正確的詞性的程序,也即確定每個(gè)詞是名詞、動(dòng)詞、形容詞或其他詞性的過(guò)程。在漢語(yǔ)中,詞性標(biāo)注比較簡(jiǎn)單,因?yàn)闈h語(yǔ)詞匯詞性多變的情況比較少見(jiàn),大多詞語(yǔ)只有一個(gè)詞性,或者出現(xiàn)頻次最高的詞性遠(yuǎn)遠(yuǎn)高于第二位的詞性。據(jù)說(shuō),只需選取最高頻詞性,即可實(shí)現(xiàn)80%準(zhǔn)確率的中文詞性標(biāo)注程序。利用HMM即可實(shí)現(xiàn)更高準(zhǔn)確率的詞性標(biāo)注。
3、名實(shí)體識(shí)別
命名實(shí)體識(shí)別(Named Entity Recognition,簡(jiǎn)稱NER),又稱作“專名識(shí)別”,是指識(shí)別文本中具有特定意義的實(shí)體,主要包括人名、地名、機(jī)構(gòu)名、專有名詞等。
(1)實(shí)體邊界識(shí)別;(2) 確定實(shí)體類別(人名、地名、機(jī)構(gòu)名或其他)
命名實(shí)體識(shí)別是信息提取、問(wèn)答系統(tǒng)、句法分析、機(jī)器翻譯、面向Semantic Web的元數(shù)據(jù)標(biāo)注等應(yīng)用領(lǐng)域的重要基礎(chǔ)工具。
基于規(guī)則和詞典的方法( MUC-6 會(huì)議中幾乎所有參賽成員都采用基于規(guī)則的方法),該方法需要專家制定規(guī)則,準(zhǔn)確率較高,但依賴于特征領(lǐng)域,可移植性差;
基于統(tǒng)計(jì)的方法,主要采用 HMM 、 MEMM 、 CRF, 難點(diǎn)在于特征選擇上,該方法能獲得好的魯棒性和靈活性,不需太多的人工干預(yù)和領(lǐng)域限制,但需要大量的標(biāo)注集。
混合方法,采用規(guī)則與統(tǒng)計(jì)相結(jié)合,多種統(tǒng)計(jì)方法相結(jié)合等,是目前主流的方法。
特征:上下文信息+構(gòu)詞法
4、指代消解
指代是一種常見(jiàn)的語(yǔ)言現(xiàn)象,一般情況下,指代分為2種:回指和共指。
回指是指當(dāng)前的照應(yīng)語(yǔ)與上文出現(xiàn)的詞、短語(yǔ)或句子(句群)存在密切的語(yǔ)義關(guān)聯(lián)性,指代依存于上下文語(yǔ)義中,在不同的語(yǔ)言環(huán)境中可能指代不同的實(shí)體,具有非對(duì)稱性和非傳遞性;
共指主要是指2個(gè)名詞(包括代名詞、名詞短語(yǔ))指向真實(shí)世界中的同一參照體,這種指代脫離上下文仍然成立。
目前指代消解研究主要側(cè)重于等價(jià)關(guān)系,只考慮2個(gè)詞或短語(yǔ)是否指示現(xiàn)實(shí)世界中同一實(shí)體的問(wèn)題,即共指消解。
中文的指代主要有3種典型的形式:
(1)人稱代詞(pronoun),例如:李明 怕高媽媽一人呆在家
里寂寞,他 便將家里的電視搬了過(guò)來(lái)。
(2)指示代詞(demonstrative),例如:很多人都想留下什么給孩子,這 可以理解,但不完全正確。
(3)有定描述(definite description),例如:,貿(mào)易制裁已經(jīng)成為了美國(guó)政府對(duì)華的慣用大棒,這根 大棒 真如美國(guó)政府所希望的那樣靈驗(yàn)嗎?
5、文本分類
一個(gè)文本(以下基本不區(qū)分“文本”和“文檔”兩個(gè)詞的含義) 分類問(wèn)題就是將
一篇文檔歸入預(yù)先定義的幾個(gè)類別中的一個(gè)或幾個(gè),而文本的自動(dòng)分類則是使用計(jì)算機(jī)程序來(lái)實(shí)現(xiàn)這樣的分類。
6、問(wèn)答系統(tǒng)
問(wèn)答系統(tǒng)(Question Answering System, QA)是信息檢索系統(tǒng)的一種高級(jí)形式,它能用準(zhǔn)確、簡(jiǎn)潔的自然語(yǔ)言回答用戶用自然語(yǔ)言提出的問(wèn)題。
依據(jù)問(wèn)題類型可分為:限定域和開(kāi)放域兩種,依據(jù)數(shù)據(jù)類型可分為:結(jié)構(gòu)型和無(wú)結(jié)構(gòu)型(文本),依據(jù)答案類型可分為:抽取式和產(chǎn)生式兩種。
問(wèn)句分析-》文檔檢索-》答案抽?。?yàn)證)
?
自然語(yǔ)言處理工具包:
中文的是哈工大開(kāi)源的那個(gè)工具包 LTP (Language Technology Platform) developed by HIT-SCIR(哈爾濱工業(yè)大學(xué)社會(huì)計(jì)算與信息檢索研究中心)。
英文的(python):
· pattern - simpler to get started than NLTK
· chardet - character encoding detection
· pyenchant - easy access to dictionaries
· scikit-learn - has support for text classification
· unidecode - because ascii is much easier to deal with
掌握以下的幾個(gè)tool:
CRF++
GIZA
Word2Vec
? ? ?自然語(yǔ)言處理推薦學(xué)習(xí)書(shū)籍
現(xiàn)在自然語(yǔ)言處理都要靠統(tǒng)計(jì)學(xué)知識(shí),下面推薦四本自然語(yǔ)言處理領(lǐng)域的標(biāo)準(zhǔn)書(shū)籍
《數(shù)學(xué)之美》,這個(gè)書(shū)寫(xiě)得特別科普且生動(dòng)形象,我相信你不會(huì)覺(jué)得枯燥
《統(tǒng)計(jì)學(xué)習(xí)方法》
《自然語(yǔ)言處理綜論》
《統(tǒng)計(jì)自然語(yǔ)言處理基礎(chǔ)》
《自然語(yǔ)言理解》
#e#
自然語(yǔ)言處理概況
自然語(yǔ)言處理是研究計(jì)算機(jī)處理人類語(yǔ)言的一門(mén)技術(shù),包括:
1.句法語(yǔ)義分析:對(duì)于給定的句子,進(jìn)行分詞、詞性標(biāo)記、命名實(shí)體識(shí)別和鏈接、句法分析、語(yǔ)義角色識(shí)別和多義詞消歧。
2.信息抽?。?/strong>從給定文本中抽取重要的信息,比如,時(shí)間、地點(diǎn)、人物、事件、原因、結(jié)果、數(shù)字、日期、貨幣、專有名詞等等。通俗說(shuō)來(lái),就是要了解誰(shuí)在什么時(shí)候、什么原因、對(duì)誰(shuí)、做了什么事、有什么結(jié)果。涉及到實(shí)體識(shí)別、時(shí)間抽取、因果關(guān)系抽取等關(guān)鍵技術(shù)。
3.文本挖掘(或者文本數(shù)據(jù)挖掘):包括文本聚類、分類、信息抽取、摘要、情感分析以及對(duì)挖掘的信息和知識(shí)的可視化、交互式的表達(dá)界面。目前主流的技術(shù)都是基于統(tǒng)計(jì)機(jī)器學(xué)習(xí)的。
4.機(jī)器翻譯:把輸入的源語(yǔ)言文本通過(guò)自動(dòng)翻譯獲得另外一種語(yǔ)言的文本。根據(jù)輸入媒介不同,可以細(xì)分為文本翻譯、語(yǔ)音翻譯、手語(yǔ)翻譯、圖形翻譯等。機(jī)器翻譯從最早的基于規(guī)則的方法到二十年前的基于統(tǒng)計(jì)的方法,再到今天的基于神經(jīng)網(wǎng)絡(luò)(編碼-解碼)的方法,逐漸形成了一套比較嚴(yán)謹(jǐn)?shù)姆椒w系。
5.信息檢索:對(duì)大規(guī)模的文檔進(jìn)行索引??珊?jiǎn)單對(duì)文檔中的詞匯,賦之以不同的權(quán)重來(lái)建立索引,也可利用1,2,3的技術(shù)來(lái)建立更加深層的索引。在查詢的時(shí)候,對(duì)輸入的查詢表達(dá)式比如一個(gè)檢索詞或者一個(gè)句子進(jìn)行分析,然后在索引里面查找匹配的候選文檔,再根據(jù)一個(gè)排序機(jī)制把候選文檔排序,最后輸出排序得分最高的文檔。
6.問(wèn)答系統(tǒng): 對(duì)一個(gè)自然語(yǔ)言表達(dá)的問(wèn)題,由問(wèn)答系統(tǒng)給出一個(gè)精準(zhǔn)的答案。需要對(duì)自然語(yǔ)言查詢語(yǔ)句進(jìn)行某種程度的語(yǔ)義分析,包括實(shí)體鏈接、關(guān)系識(shí)別,形成邏輯表達(dá)式,然后到知識(shí)庫(kù)中查找可能的候選答案并通過(guò)一個(gè)排序機(jī)制找出最佳的答案。
7.對(duì)話系統(tǒng):系統(tǒng)通過(guò)一系列的對(duì)話,跟用戶進(jìn)行聊天、回答、完成某一項(xiàng)任務(wù)。涉及到用戶意圖理解、通用聊天引擎、問(wèn)答引擎、對(duì)話管理等技術(shù)。此外,為了體現(xiàn)上下文相關(guān),要具備多輪對(duì)話能力。同時(shí),為了體現(xiàn)個(gè)性化,要開(kāi)發(fā)用戶畫(huà)像以及基于用戶畫(huà)像的個(gè)性化回復(fù)。
隨著深度學(xué)習(xí)在圖像識(shí)別、語(yǔ)音識(shí)別領(lǐng)域的大放異彩,人們對(duì)深度學(xué)習(xí)在NLP的價(jià)值也寄予厚望。再加上AlphaGo的成功,人工智能的研究和應(yīng)用變得炙手可熱。自然語(yǔ)言處理作為人工智能領(lǐng)域的認(rèn)知智能,成為目前大家關(guān)注的焦點(diǎn)。很多研究生都在進(jìn)入自然語(yǔ)言領(lǐng)域,寄望未來(lái)在人工智能方向大展身手。但是,大家常常遇到一些問(wèn)題。俗話說(shuō),萬(wàn)事開(kāi)頭難。如果第一件事情成功了,學(xué)生就能建立信心,找到竅門(mén),今后越做越好。否則,也可能就灰心喪氣,甚至離開(kāi)這個(gè)領(lǐng)域。這里針對(duì)給出我個(gè)人的建議,希望我的這些粗淺觀點(diǎn)能夠引起大家更深層次的討論
建議1:如何在NLP領(lǐng)域快速學(xué)會(huì)第一個(gè)技能?
我的建議是:找到一個(gè)開(kāi)源項(xiàng)目,比如機(jī)器翻譯或者深度學(xué)習(xí)的項(xiàng)目。理解開(kāi)源項(xiàng)目的任務(wù),編譯通過(guò)該項(xiàng)目發(fā)布的示范程序,得到與項(xiàng)目示范程序一致的結(jié)果。然后再深入理解開(kāi)源項(xiàng)目示范程序的算法。自己編程實(shí)現(xiàn)一下這個(gè)示范程序的算法。再按照項(xiàng)目提供的標(biāo)準(zhǔn)測(cè)試集測(cè)試自己實(shí)現(xiàn)的程序。如果輸出的結(jié)果與項(xiàng)目中出現(xiàn)的結(jié)果不一致,就要仔細(xì)查驗(yàn)自己的程序,反復(fù)修改,直到結(jié)果與示范程序基本一致。如果還是不行,就大膽給項(xiàng)目的作者寫(xiě)信請(qǐng)教。在此基礎(chǔ)上,再看看自己能否進(jìn)一步完善算法或者實(shí)現(xiàn),取得比示范程序更好的結(jié)果。
建議2:如何選擇第一個(gè)好題目?
工程型研究生,選題很多都是老師給定的。需要采取比較實(shí)用的方法,扎扎實(shí)實(shí)地動(dòng)手實(shí)現(xiàn)??赡懿恍枰嗌倮碚搫?chuàng)新,但是需要較強(qiáng)的實(shí)現(xiàn)能力和綜合創(chuàng)新能力。而學(xué)術(shù)型研究生需要取得一流的研究成果,因此選題需要有一定的創(chuàng)新。我這里給出如下的幾點(diǎn)建議。
· 先找到自己喜歡的研究領(lǐng)域。你找到一本最近的ACL會(huì)議論文集, 從中找到一個(gè)你比較喜歡的領(lǐng)域。在選題的時(shí)候,多注意選擇藍(lán)海的領(lǐng)域。這是因?yàn)樗{(lán)海的領(lǐng)域,相對(duì)比較新,容易出成果。
· 充分調(diào)研這個(gè)領(lǐng)域目前的發(fā)展?fàn)顩r。包括如下幾個(gè)方面的調(diào)研:方法方面,是否有一套比較清晰的數(shù)學(xué)體系和機(jī)器學(xué)習(xí)體系;數(shù)據(jù)方面,有沒(méi)有一個(gè)大家公認(rèn)的標(biāo)準(zhǔn)訓(xùn)練集和測(cè)試集;研究團(tuán)隊(duì),是否有著名團(tuán)隊(duì)和人士參加。如果以上幾個(gè)方面的調(diào)研結(jié)論不是太清晰,作為初學(xué)者可能不要輕易進(jìn)入。
· 在確認(rèn)進(jìn)入一個(gè)領(lǐng)域之后,按照建議一所述,需要找到本領(lǐng)域的開(kāi)源項(xiàng)目或者工具,仔細(xì)研究一遍現(xiàn)有的主要流派和方法,先入門(mén)。
· 反復(fù)閱讀本領(lǐng)域最新發(fā)表的文章,多閱讀本領(lǐng)域牛人發(fā)表的文章。在深入了解已有工作的基礎(chǔ)上,探討還有沒(méi)有一些地方可以推翻、改進(jìn)、綜合、遷移。注意做實(shí)驗(yàn)的時(shí)候,不要貪多,每次實(shí)驗(yàn)只需要驗(yàn)證一個(gè)想法。每次實(shí)驗(yàn)之后,必須要進(jìn)行分析存在的錯(cuò)誤,找出原因。
· 對(duì)成功的實(shí)驗(yàn),進(jìn)一步探討如何改進(jìn)算法。注意實(shí)驗(yàn)數(shù)據(jù)必須是業(yè)界公認(rèn)的數(shù)據(jù)。
· 與已有的算法進(jìn)行比較,體會(huì)能夠得出比較一般性的結(jié)論。如果有,則去寫(xiě)一篇文章,否則,應(yīng)該換一個(gè)新的選題。
建議3:如何寫(xiě)出第一篇論文?
· 接上一個(gè)問(wèn)題,如果想法不錯(cuò),且被實(shí)驗(yàn)所證明,就可開(kāi)始寫(xiě)第一篇論文了。
· 確定論文的題目。在定題目的時(shí)候,一般不要“…系統(tǒng)”、“…研究與實(shí)踐”,要避免太長(zhǎng)的題目,因?yàn)椴缓皿w現(xiàn)要點(diǎn)。題目要具體,有深度,突出算法。
· 寫(xiě)論文摘要。要突出本文針對(duì)什么重要問(wèn)題,提出了什么方法,跟已有工作相比,具有什么優(yōu)勢(shì)。實(shí)驗(yàn)結(jié)果表明,達(dá)到了什么水準(zhǔn),解決了什么問(wèn)題。
· 寫(xiě)引言。首先講出本項(xiàng)工作的背景,這個(gè)問(wèn)題的定義,它具有什么重要性。然后介紹對(duì)這個(gè)問(wèn)題,現(xiàn)有的方法是什么,有什么優(yōu)點(diǎn)。但是(注意但是)現(xiàn)有的方法仍然有很多缺陷或者挑戰(zhàn)。比如(注意比如),有什么問(wèn)題。本文針對(duì)這個(gè)問(wèn)題,受什么方法(誰(shuí)的工作)之啟發(fā),提出了什么新的方法并做了如下幾個(gè)方面的研究。然后對(duì)每個(gè)方面分門(mén)別類加以敘述,最后說(shuō)明實(shí)驗(yàn)的結(jié)論。再說(shuō)本文有幾條貢獻(xiàn),一般寫(xiě)三條足矣。然后說(shuō)說(shuō)文章的章節(jié)組織,以及本文的重點(diǎn)。有的時(shí)候東西太多,篇幅有限,只能介紹最重要的部分,不需要面面俱到。
· 相關(guān)工作。對(duì)相關(guān)工作做一個(gè)梳理,按照流派劃分,對(duì)主要的最多三個(gè)流派做一個(gè)簡(jiǎn)單介紹。介紹其原理,然后說(shuō)明其局限性。
· 然后可設(shè)立兩個(gè)章節(jié)介紹自己的工作。第一個(gè)章節(jié)是算法描述。包括問(wèn)題定義,數(shù)學(xué)符號(hào),算法描述。文章的主要公式基本都在這里。有時(shí)候要給出簡(jiǎn)明的推導(dǎo)過(guò)程。如果借鑒了別人的理論和算法,要給出清晰的引文信息。在此基礎(chǔ)上,由于一般是基于機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)的方法,要介紹你的模型訓(xùn)練方法和解碼方法。第二章就是實(shí)驗(yàn)環(huán)節(jié)。一般要給出實(shí)驗(yàn)的目的,要檢驗(yàn)什么,實(shí)驗(yàn)的方法,數(shù)據(jù)從哪里來(lái),多大規(guī)模。最好數(shù)據(jù)是用公開(kāi)評(píng)測(cè)數(shù)據(jù),便于別人重復(fù)你的工作。然后對(duì)每個(gè)實(shí)驗(yàn)給出所需的技術(shù)參數(shù),并報(bào)告實(shí)驗(yàn)結(jié)果。同時(shí)為了與已有工作比較,需要引用已有工作的結(jié)果,必要的時(shí)候需要重現(xiàn)重要的工作并報(bào)告結(jié)果。用實(shí)驗(yàn)數(shù)據(jù)說(shuō)話,說(shuō)明你比人家的方法要好。要對(duì)實(shí)驗(yàn)結(jié)果好好分析你的工作與別人的工作的不同及各自利弊,并說(shuō)明其原因。對(duì)于目前尚不太好的地方,要分析問(wèn)題之所在,并將其列為未來(lái)的工作。
評(píng)論