什么是自然語言處理
自然語言處理(英語:natural language processing,縮寫作 NLP)
是人工智能和語言學領域的分支學科。此領域探討如何處理及運用自然語言日矫;自然語言認知則是指讓電腦“懂”人類的語言档痪。自然語言生成系統(tǒng)把計算機數(shù)據(jù)轉(zhuǎn)化為自然語言。自然語言理解系統(tǒng)把自然語言轉(zhuǎn)化為計算機程序更易于處理的形式探越。
自然語言處理有四大類常見的任務
第一類任務:序列標注狡赐,譬如命名實體識別、語義標注钦幔、詞性標注枕屉、分詞等;
第二類任務:分類任務鲤氢,譬如文本分類搀擂、情感分析等;
第三類任務:句對關(guān)系判斷卷玉,譬如自然語言推理哨颂、問答QA、文本語義相似性等揍庄;
第四類任務:生成式任務咆蒿,譬如機器翻譯东抹、文本摘要蚂子、寫詩造句等。
什么是命名實體識別
命名實體識別(NER)是信息提如郧(Information Extraction)的一個子任務食茎,主要涉及如何從文本中提取命名實體并將其分類至事先劃定好的類別,如在招聘信息中提取具體招聘公司馏谨、崗位和工作地點的信息别渔,并將其分別歸納至公司、崗位和地點的類別下惧互。命名實體識別往往先將整句拆解為詞語并對每個詞語進行此行標注哎媚,根據(jù)習得的規(guī)則對詞語進行判別。這項任務的關(guān)鍵在于對未知實體的識別喊儡〔τ耄基于此,命名實體識別的主要思想在于根據(jù)現(xiàn)有實例的特征總結(jié)識別和分類規(guī)則艾猜。這些方法可以被分為有監(jiān)督(supervised)买喧、半監(jiān)督(semi-supervised)和無監(jiān)督(unsupervised)三類。有監(jiān)督學習包括隱形馬科夫模型(HMM)匆赃、決策樹淤毛、最大熵模型(ME)、支持向量機(SVM)和條件隨機場(CRF)算柳。這些方法主要是讀取注釋語料庫低淡,記憶實例并進行學習,根據(jù)這些例子的特征生成針對某一種實例的識別規(guī)則。
什么是詞性標注
詞性標注 (pos tagging) 是指為分詞結(jié)果中的每個單詞標注一個正確的詞性的程序蔗蹋,也即確定每個詞是名詞事期、動詞、形容詞或其他詞性的過程纸颜。
什么是文本分類
該技術(shù)可被用于理解兽泣、組織和分類結(jié)構(gòu)化或非結(jié)構(gòu)化文本文檔。文本挖掘所使用的模型有詞袋(BOW)模型胁孙、語言模型(ngram)和主題模型唠倦。隱馬爾可夫模型通常用于詞性標注(POS)。其涵蓋的主要任務有句法分析涮较、情緒分析和垃圾信息檢測稠鼻。
GLUE benchmark
General Language Understanding Evaluation benchmark,通用語言理解評估基準狂票,用于測試模型在廣泛自然語言理解任務中的魯棒性候齿。
LM:Language Model
語言模型,一串詞序列的概率分布闺属,通過概率模型來表示文本語義慌盯。
語言模型有什么作用?通過語言模型掂器,可以量化地衡量一段文本存在的可能性亚皂。對于一段長度為n的文本,文本里每個單詞都有上文預測該單詞的過程国瓮,所有單詞的概率乘積便可以用來評估文本灭必。在實踐中,如果文本很長乃摹,P(wi|context(wi))的估算會很困難禁漓,因此有了簡化版:N元模型。在N元模型中孵睬,通過對當前詞的前N個詞進行計算來估算該詞的條件概率播歼。
重要文獻與資料
- 自然語言處理中的預訓練技術(shù)發(fā)展史,參考文章: https://zhuanlan.zhihu.com/p/49271699
作者:張俊林
知識圖譜資料
https://segmentfault.com/a/1190000015460828
對話機器人
https://segmentfault.com/a/1190000015284996
https://segmentfault.com/a/1190000015285996
詞向量
我們介紹詞的向量表征肪康,也稱為word embedding荚恶。詞向量是自然語言處理中常見的一個操作,是搜索引擎磷支、廣告系統(tǒng)谒撼、推薦系統(tǒng)等互聯(lián)網(wǎng)服務背后常見的基礎技術(shù)。
在這些互聯(lián)網(wǎng)服務里雾狈,我們經(jīng)常要比較兩個詞或者兩段文本之間的相關(guān)性廓潜。為了做這樣的比較,我們往往先要把詞表示成計算機適合處理的方式。最自然的方式恐怕莫過于向量空間模型(vector space model)辩蛋。 在這種方式里呻畸,每個詞被表示成一個實數(shù)向量(one-hot vector),其長度為字典大小悼院,每個維度對應一個字典里的每個詞伤为,除了這個詞對應維度上的值是1,其他元素都是0据途。
One-hot vector雖然自然绞愚,但是用處有限。比如颖医,在互聯(lián)網(wǎng)廣告系統(tǒng)里位衩,如果用戶輸入的query是“母親節(jié)”,而有一個廣告的關(guān)鍵詞是“康乃馨”熔萧。雖然按照常理糖驴,我們知道這兩個詞之間是有聯(lián)系的——母親節(jié)通常應該送給母親一束康乃馨;但是這兩個詞對應的one-hot vectors之間的距離度量佛致,無論是歐氏距離還是余弦相似度(cosine similarity)贮缕,由于其向量正交,都認為這兩個詞毫無相關(guān)性晌杰。 得出這種與我們相悖的結(jié)論的根本原因是:每個詞本身的信息量都太小跷睦。所以,僅僅給定兩個詞肋演,不足以讓我們準確判別它們是否相關(guān)。要想精確計算相關(guān)性烂琴,我們還需要更多的信息——從大量數(shù)據(jù)里通過機器學習方法歸納出來的知識爹殊。
在機器學習領域里,各種“知識”被各種模型表示奸绷,詞向量模型(word embedding model)就是其中的一類梗夸。通過詞向量模型可將一個 one-hot vector映射到一個維度更低的實數(shù)向量(embedding vector),如embedding(母親節(jié))=[0.3,4.2,?1.5,...],embedding(康乃馨)=[0.2,5.6,?2.3,...]号醉。在這個映射到的實數(shù)向量表示中反症,希望兩個語義(或用法)上相似的詞對應的詞向量“更像”,這樣如“母親節(jié)”和“康乃馨”的對應詞向量的余弦相似度就不再為零了畔派。
詞向量模型可以是概率模型铅碍、共生矩陣(co-occurrence matrix)模型或神經(jīng)元網(wǎng)絡模型。在用神經(jīng)網(wǎng)絡求詞向量之前线椰,傳統(tǒng)做法是統(tǒng)計一個詞語的共生矩陣X胞谈。
X是一個|V|×|V| 大小的矩陣,Xij表示在所有語料中,詞匯表V(vocabulary)中第i個詞和第j個詞同時出現(xiàn)的詞數(shù)烦绳,|V|為詞匯表的大小卿捎。對X做矩陣分解(如奇異值分解),得到的U即視為所有詞的詞向量:
但這樣的傳統(tǒng)做法有很多問題:
- 由于很多詞沒有出現(xiàn)径密,導致矩陣極其稀疏午阵,因此需要對詞頻做額外處理來達到好的矩陣分解效果;
- 矩陣非常大享扔,維度太高(通常達到106×106的數(shù)量級)趟庄;
- 需要手動去掉停用詞(如although, a,...),不然這些頻繁出現(xiàn)的詞也會影響矩陣分解的效果伪很。
基于神經(jīng)網(wǎng)絡的模型不需要計算和存儲一個在全語料上統(tǒng)計產(chǎn)生的大表戚啥,而是通過學習語義信息得到詞向量,因此能很好地解決以上問題锉试。
神經(jīng)網(wǎng)絡
當詞向量訓練好后猫十,我們可以用數(shù)據(jù)可視化算法t-SNE[4]畫出詞語特征在二維上的投影(如下圖所示)。從圖中可以看出呆盖,語義相關(guān)的詞語(如a, the, these; big, huge)在投影上距離很近拖云,語意無關(guān)的詞(如say, business; decision, japan)在投影上的距離很遠。
另一方面应又,我們知道兩個向量的余弦值在[?1,1]的區(qū)間內(nèi):兩個完全相同的向量余弦值為1, 兩個相互垂直的向量之間余弦值為0宙项,兩個方向完全相反的向量余弦值為-1,即相關(guān)性和余弦值大小成正比株扛。因此我們還可以計算兩個詞向量的余弦相似度尤筐。
模型概覽
語言模型
在介紹詞向量模型之前,我們先來引入一個概念:語言模型洞就。 語言模型旨在為語句的聯(lián)合概率函數(shù)P(w1,...,wT)建模, 其中wi表示句子中的第i個詞盆繁。語言模型的目標是,希望模型對有意義的句子賦予大概率旬蟋,對沒意義的句子賦予小概率油昂。 這樣的模型可以應用于很多領域,如機器翻譯倾贰、語音識別冕碟、信息檢索、詞性標注匆浙、手寫識別等安寺,它們都希望能得到一個連續(xù)序列的概率。 以信息檢索為例吞彤,當你在搜索“how long is a football bame”時(bame是一個醫(yī)學名詞)我衬,搜索引擎會提示你是否希望搜索"how long is a football game", 這是因為根據(jù)語言模型計算出“how long is a football bame”的概率很低叹放,而與bame近似的,可能引起錯誤的詞中挠羔,game會使該句生成的概率最大井仰。
對語言模型的目標概率P(w1,...,wT),如果假設文本中每個詞都是相互獨立的破加,則整句話的聯(lián)合概率可以表示為其中所有詞語條件概率的乘積俱恶,即:
然而我們知道語句中的每個詞出現(xiàn)的概率都與其前面的詞緊密相關(guān), 所以實際上通常用條件概率表示語言模型:
N-gram neural model
在計算語言學中,n-gram是一種重要的文本表示方法范舀,表示一個文本中連續(xù)的n個項合是。基于具體的應用場景锭环,每一項可以是一個字母聪全、單詞或者音節(jié)。 n-gram模型也是統(tǒng)計語言模型中的一種重要方法辅辩,用n-gram訓練語言模型時难礼,一般用每個n-gram的歷史n-1個詞語組成的內(nèi)容來預測第n個詞。
Yoshua Bengio等科學家就于2003年在著名論文 Neural Probabilistic Language Models [1] 中介紹如何學習一個神經(jīng)元網(wǎng)絡表示的詞向量模型玫锋。文中的神經(jīng)概率語言模型(Neural Network Language Model蛾茉,NNLM)通過一個線性映射和一個非線性隱層連接,同時學習了語言模型和詞向量撩鹿,即通過學習大量語料得到詞語的向量表達谦炬,通過這些向量得到整個句子的概率。因所有的詞語都用一個低維向量來表示节沦,用這種方法學習語言模型可以克服維度災難(curse of dimensionality)键思。注意:由于“神經(jīng)概率語言模型”說法較為泛泛,我們在這里不用其NNLM的本名散劫,考慮到其具體做法稚机,本文中稱該模型為N-gram neural model。
在上文中已經(jīng)講到用條件概率建模語言模型获搏,即一句話中第t個詞的概率和該句話的前t?1個詞相關(guān)∈可實際上越遠的詞語其實對該詞的影響越小常熙,那么如果考慮一個n-gram, 每個詞都只受其前面n-1個詞的影響,則有:
給定一些真實語料碱茁,這些語料中都是有意義的句子裸卫,N-gram模型的優(yōu)化目標則是最大化目標函數(shù):
其中f(wt,wt?1,...,wt?n+1)表示根據(jù)歷史n-1個詞得到當前詞wt的條件概率,R(θ)表示參數(shù)正則項纽竣。
Continuous Bag-of-Words model(CBOW)
CBOW模型通過一個詞的上下文(各N個詞)預測當前詞墓贿。當N=2時茧泪,模型如下圖所示:
具體來說,不考慮上下文的詞語輸入順序聋袋,CBOW是用上下文詞語的詞向量的均值來預測當前詞队伟。
其中xt為第t個詞的詞向量,分類分數(shù)(score)向量 z=U?context幽勒,最終的分類y采用softmax嗜侮,損失函數(shù)采用多類分類交叉熵。
Skip-gram model
CBOW的好處是對上下文詞語的分布在詞向量上進行了平滑啥容,去掉了噪聲锈颗,因此在小數(shù)據(jù)集上很有效。而Skip-gram的方法中咪惠,用一個詞預測其上下文击吱,得到了當前詞上下文的很多樣本,因此可用于更大的數(shù)據(jù)集遥昧。
如上圖所示覆醇,Skip-gram模型的具體做法是,將一個詞的詞向量映射到2n個詞的詞向量(2n表示當前輸入詞的前后各n個詞)渠鸽,然后分別通過softmax得到這2n個詞的分類損失值之和叫乌。
我們介紹了詞向量、語言模型和詞向量的關(guān)系徽缚、以及如何通過訓練神經(jīng)網(wǎng)絡模型獲得詞向量憨奸。在信息檢索中,我們可以根據(jù)向量間的余弦夾角凿试,來判斷query和文檔關(guān)鍵詞這二者間的相關(guān)性排宰。在句法分析和語義分析中,訓練好的詞向量可以用來初始化模型那婉,以得到更好的效果板甘。在文檔分類中,有了詞向量之后详炬,可以用聚類的方法將文檔中同義詞進行分組盐类,也可以用 N-gram 來預測下一個詞。希望大家在本章后能夠自行運用詞向量進行相關(guān)領域的研究呛谜。