吾愛(ài)NLP(5)—詞向量技術(shù)-從word2vec到ELMo

詞向量

本文關(guān)鍵詞:NLP鹰祸、詞向量侥猩、word2vec秫筏、ELMo莫杈、語(yǔ)言模型
該系列更新的第二篇已在個(gè)人微信公眾號(hào)「AI極客 」發(fā)布:
詞向量(2)--從ELMo到Bert
后續(xù)更新文章互例,首發(fā)于個(gè)人公眾號(hào),敬請(qǐng)關(guān)注筝闹!

0. 前言

"詞和句子的嵌入已成為所有基于深度學(xué)習(xí)的自然語(yǔ)言處理(NLP)系統(tǒng)的重要組成部分媳叨,它們?cè)诠潭ㄩL(zhǎng)度的稠密向量中編碼單詞和句子,以大幅度提高神經(jīng)網(wǎng)絡(luò)處理文本數(shù)據(jù)的能力丁存。"

大趨勢(shì)是對(duì)通用嵌入的追求:在大型語(yǔ)料庫(kù)上預(yù)訓(xùn)練好的嵌入肩杈,可以插入各種下游任務(wù)模型(情感分析,分類解寝,翻譯…)扩然,通過(guò)在更大的數(shù)據(jù)集中學(xué)習(xí)一些常用的詞句表示,從而自動(dòng)提高它們的性能聋伦。
這是一種遷移學(xué)習(xí)夫偶。

作為NLP領(lǐng)域的愛(ài)好者,在我之前的多個(gè)文章里已經(jīng)很多次提到詞向量技術(shù)了(基于TextCNN的文本分類中)觉增,它的代表技術(shù)word2vec更是“老生常談”了...

一直想寫(xiě)一篇有關(guān)于word2vec的文章兵拢,一直沒(méi)有抽出時(shí)間(因?yàn)槔碚摂?shù)學(xué)公式太多了,編輯公示太痛苦了)...

直到一次偶然的面試:被問(wèn)到一個(gè)關(guān)于動(dòng)態(tài)詞向量的問(wèn)題(ELMo逾礁,當(dāng)時(shí)懵逼了)…事后查閱了一些詞向量相關(guān)的文獻(xiàn)说铃,才發(fā)現(xiàn)自己原來(lái)還停留在靜態(tài)詞向量的word2vec的世界里访惜,面試官是想考察我對(duì)最新技術(shù)的洞察力!

詞向量為文本數(shù)據(jù)提供了一種數(shù)值化的表示方法腻扇,這是文本數(shù)據(jù)能夠被計(jì)算機(jī)處理的基礎(chǔ)债热,也是機(jī)器學(xué)習(xí)技術(shù)能夠應(yīng)用于文本數(shù)據(jù)處理的重要前提基礎(chǔ)。

1. 詞向量技術(shù)

自然語(yǔ)言是一套用來(lái)表達(dá)含義的復(fù)雜系統(tǒng)幼苛。在這套系統(tǒng)中窒篱,詞是表義的基本單元。顧名思義舶沿,詞向量是用來(lái)表示詞的向量墙杯,也可被認(rèn)為是詞的特征向量。

這通常需要把維數(shù)為詞典大小的高維空間嵌入到一個(gè)更低維數(shù)的連續(xù)向量空間括荡。把詞映射為實(shí)數(shù)域上向量的技術(shù)也叫詞嵌入(word embedding)高镐。近年來(lái),詞向量已逐漸成為自然語(yǔ)言處理的基礎(chǔ)知識(shí)畸冲。
那么避消,我們應(yīng)該如何使用向量表示詞呢?

1.1詞向量的獲取方式

詞向量的獲取方式可以大體分為兩類:一類是基于統(tǒng)計(jì)方法(例如:基于共現(xiàn)矩陣召夹、SVD),另一種是基于語(yǔ)言模型的恕沫。

(1).基于共現(xiàn)矩陣的方式

通過(guò)統(tǒng)計(jì)一個(gè)事先指定大小的窗口內(nèi)的word共現(xiàn)次數(shù)监憎,以word周邊的共現(xiàn)詞的次數(shù)做為當(dāng)前word的vector。具體來(lái)說(shuō)婶溯,我們通過(guò)從大量的語(yǔ)料文本中構(gòu)建一個(gè)共現(xiàn)矩陣來(lái)定義word representation鲸阔。
例如,有語(yǔ)料如下:

I like deep learning.
I like NLP.
I enjoy flying.

則其共現(xiàn)矩陣X如下:

矩陣定義的詞向量在一定程度上緩解了one-hot向量相似度為0的問(wèn)題迄委,但沒(méi)有解決數(shù)據(jù)稀疏性和維度災(zāi)難的問(wèn)題褐筛。

(2). SVD(奇異值分解)

既然基于co-occurrence矩陣得到的離散詞向量存在著高維和稀疏性的問(wèn) 題,一個(gè)自然而然的解決思路是對(duì)原始詞向量進(jìn)行降維叙身,從而得到一個(gè)稠密的連續(xù)詞向量渔扎。
首先,統(tǒng)計(jì)一個(gè)詞語(yǔ)的共生矩陣X信轿。X是一個(gè)|V|×|V| 大小的矩陣晃痴,Xij表示在所有語(yǔ)料中,詞匯表V中第i個(gè)詞和第j個(gè)詞同時(shí)出現(xiàn)的詞數(shù)财忽,|V|為詞匯表的大小倘核。對(duì)X做矩陣分解(如奇異值分解,Singular Value Decomposition [參考資料])得到矩陣正交矩陣U即彪,對(duì)U進(jìn)行歸一化得到矩陣紧唱,即視為所有詞的詞向量:

SVD

SVD得到了word的稠密(dense)矩陣,該矩陣具有很多良好的性質(zhì):語(yǔ)義相近的詞在向量空間相近,甚至可以一定程度反映word間的線性關(guān)系漏益。


但這樣的傳統(tǒng)做法有很多問(wèn)題:

  1. 由于很多詞沒(méi)有出現(xiàn)蛹锰,導(dǎo)致矩陣極其稀疏,因此需要對(duì)詞頻做額外處理來(lái)達(dá)到好的矩陣分解效果遭庶;
  2. 矩陣非常大宁仔,維度太高
  3. 需要手動(dòng)去掉停用詞(如although, a,...),不然這些頻繁出現(xiàn)的詞也會(huì)影響矩陣分解的效果峦睡。
(3)語(yǔ)言模型

在介紹詞向量模型之前翎苫,先簡(jiǎn)單的介紹一個(gè)概念:語(yǔ)言模型。 語(yǔ)言模型旨在為語(yǔ)句的聯(lián)合概率函數(shù)P(w1,...,wT)
建模, 其中wi表示句子中的第i個(gè)詞榨了。語(yǔ)言模型的目標(biāo)是煎谍,希望模型對(duì)有意義的句子賦予大概率,對(duì)沒(méi)意義的句子賦予小概率龙屉。 這樣的模型可以應(yīng)用于很多領(lǐng)域呐粘,如機(jī)器翻譯、語(yǔ)音識(shí)別转捕、信息檢索作岖、詞性標(biāo)注、手寫(xiě)識(shí)別等五芝,它們都希望能得到一個(gè)連續(xù)序列的概率痘儡。 以信息檢索為例,當(dāng)你在搜索“how long is a football bame”時(shí)(bame是一個(gè)醫(yī)學(xué)名詞)枢步,搜索引擎會(huì)提示你是否希望搜索"how long is a football game", 這是因?yàn)楦鶕?jù)語(yǔ)言模型計(jì)算出“how long is a football bame”的概率很低沉删,而與bame近似的,可能引起錯(cuò)誤的詞中醉途,game會(huì)使該句生成的概率最大矾瑰。

對(duì)語(yǔ)言模型的目標(biāo)概率P(w1,...,wT),如果假設(shè)文本中每個(gè)詞都是相互獨(dú)立的隘擎,則整句話的聯(lián)合概率可以表示為其中所有詞語(yǔ)條件概率的乘積殴穴,即:

然而我們知道語(yǔ)句中的每個(gè)詞出現(xiàn)的概率都與其前面的詞緊密相關(guān), 所以實(shí)際上通常用條件概率表示語(yǔ)言模型:


上面只是簡(jiǎn)單的介紹了語(yǔ)言模型,推薦閱讀的關(guān)于N-gram模型以及神經(jīng)概率語(yǔ)言模型以便于學(xué)習(xí)后續(xù)的word2vec模型嵌屎。

N-gram

2.代表技術(shù)之一 word2vec

2013年推正,Google團(tuán)隊(duì)發(fā)表了word2vec工具 [1]。word2vec工具主要包含兩個(gè)模型:跳字模型(skip-gram)和連續(xù)詞袋模型(continuous bag of words宝惰,簡(jiǎn)稱CBOW)植榕,以及兩種近似訓(xùn)練法:負(fù)采樣(negative sampling)和層序softmax(hierarchical softmax)。值得一提的是尼夺,word2vec的詞向量可以較好地表達(dá)不同詞之間的相似和類比關(guān)系尊残。

word2vec自提出后被廣泛應(yīng)用在自然語(yǔ)言處理任務(wù)中炒瘸。它的模型和訓(xùn)練方法也啟發(fā)了很多后續(xù)的詞嵌入模型。本節(jié)將重點(diǎn)介紹word2vec的模型和訓(xùn)練方法寝衫。

Skip-gram模型(跳字模型):

Skip-gram

在跳字模型中顷扩,我們用一個(gè)詞來(lái)預(yù)測(cè)它在文本序列周?chē)脑~。

舉個(gè)例子慰毅,假設(shè)文本序列是:

“I love you very much”

跳字模型所關(guān)心的是隘截,給定“you”生成鄰近詞“I”、“l(fā)ove”汹胃、“very”和“much”的條件概率婶芭。

在這個(gè)例子中,“you”叫中心詞着饥,“I”犀农、“l(fā)ove”、“very”和“much”叫背景詞宰掉。

由于“you”只生成與它距離不超過(guò)2的背景詞呵哨,該時(shí)間窗口的大小為2[與N-gram類似]。

我們來(lái)描述一下跳字模型[用最大似然估計(jì)的思想]:

假設(shè)詞典索引集V的大小為|V|轨奄,且{0,1,…,|V|?1}孟害。給定一個(gè)長(zhǎng)度為T(mén)的文本序列中,文本序列中第t的詞為w(t)挪拟。當(dāng)時(shí)間窗口大小為m時(shí)纹坐,跳字模型需要最大化給定任一中心詞生成所有背景詞的概率:

上式的最大似然估計(jì)最小化以下?lián)p失函數(shù)等價(jià):

我們可以用vu分別表示 中心詞背景詞 的向量。

換言之舞丛,對(duì)于詞典中索引為i的詞,它在作為中心詞和背景詞時(shí)的向量表示分別是vi和ui果漾。而詞典中所有詞的這兩種向量正是跳字模型所要學(xué)習(xí)的模型參數(shù)球切。為了將模型參數(shù)植入損失函數(shù),我們需要使用模型參數(shù)表達(dá)損失函數(shù)中的給定中心詞生成背景詞的條件概率绒障。給定中心詞吨凑,假設(shè)生成各個(gè)背景詞是相互獨(dú)立的。設(shè)中心詞wc在詞典中索引為c户辱,背景詞wo在詞典中索引為o鸵钝,損失函數(shù)中的給定中心詞生成背景詞的條件概率可以通過(guò)softmax函數(shù)定義為:

上式:給定任何一個(gè)中心詞Wc,產(chǎn)生背景詞Wo的概率

每一個(gè)詞庐镐,在模型中有兩個(gè)詞向量恩商,一個(gè)是作為中心詞時(shí)的詞向量,一個(gè)是作為背景詞時(shí)的詞向量

利用隨機(jī)梯度下降求解:

當(dāng)序列長(zhǎng)度T較大時(shí)必逆,我們通常在每次迭代時(shí)隨機(jī)采樣一個(gè)較短的子序列來(lái)計(jì)算有關(guān)該子序列的損失怠堪。然后揽乱,根據(jù)該損失計(jì)算詞向量的梯度并迭代詞向量。具體算法可以參考“梯度下降和隨機(jī)梯度下降——從零開(kāi)始”一節(jié)粟矿。 作為一個(gè)具體的例子凰棉,下面我們看看如何計(jì)算隨機(jī)采樣的子序列的損失有關(guān)中心詞向量的梯度。和上面提到的長(zhǎng)度為T(mén)的文本序列的損失函數(shù)類似陌粹,隨機(jī)采樣的子序列的損失實(shí)際上是對(duì)子序列中給定中心詞生成背景詞的條件概率的對(duì)數(shù)求平均撒犀。通過(guò)微分,我們可以得到上式中條件概率的對(duì)數(shù)有關(guān)中心詞向量vc梯度:

該式也可改寫(xiě)作:

上面的迭代更新計(jì)算開(kāi)銷(xiāo)太大L椭取或舞!每次都需要遍歷整個(gè)字典,對(duì)應(yīng)的解決方案在后面(這也是word2vec為啥這么牛逼的原因...厲害的不是這個(gè)工具本身哗讥,而是一種思想的應(yīng)用)

隨機(jī)采樣的子序列有關(guān)其他詞向量的梯度同理可得嚷那。訓(xùn)練模型時(shí),每一次迭代實(shí)際上是用這些梯度來(lái)迭代子序列中出現(xiàn)過(guò)的中心詞和背景詞的向量杆煞。訓(xùn)練結(jié)束后魏宽,對(duì)于詞典中的任一索引為i的詞,我們均得到該詞作為中心詞和背景詞的兩組詞向量vi和ui决乎。在自然語(yǔ)言處理應(yīng)用中队询,我們會(huì)使用跳字模型的中心詞向量。


CBOW(連續(xù)詞袋模型)

CBOW

連續(xù)詞袋模型與跳字模型類似,與跳字模型最大的不同是:

連續(xù)詞袋模型用一個(gè)中心詞在文本序列周?chē)脑~來(lái)預(yù)測(cè)該中心詞构诚。

舉個(gè)例子蚌斩,假設(shè)文本序列為:

“I love you very much”

連續(xù)詞袋模型所關(guān)心的是,鄰近詞“I”范嘱、“l(fā)ove”送膳、“very”和“much”一起生成中心詞“you”的概率。

假設(shè)詞典索引集的大小為V丑蛤,且V={0,1,…,|V|?1}</nobr>叠聋。給定一個(gè)長(zhǎng)度為T(mén)的文本序列中,文本序列中第t個(gè)詞為wu(t)受裹。當(dāng)時(shí)間窗口大小為m時(shí)碌补,連續(xù)詞袋模型需要最大化由背景詞生成任一中心詞的概率

上式的最大似然估計(jì)與最小化以下?lián)p失函數(shù)等價(jià):

我們可以用vu分別表示背景詞和中心詞的向量(注意符號(hào)和跳字模型中的不同)。換言之棉饶,對(duì)于詞典中索引為i的詞厦章,它在作為背景詞和中心詞時(shí)的向量表示分別是vi和ui。而詞典中所有詞的這兩種向量正是連續(xù)詞袋模型所要學(xué)習(xí)的模型參數(shù)照藻。為了將模型參數(shù)植入損失函數(shù)袜啃,我們需要使用模型參數(shù)表達(dá)損失函數(shù)中的給定背景詞生成中心詞的概率。設(shè)中心詞wc在詞典中索引為c幸缕,背景詞wo1囊骤、wo2晃择、...wo2m在詞典中索引為o1、o2也物、....o2m-1宫屠、o2m,損失函數(shù)中的給定背景詞生成中心詞的概率可以通過(guò)softmax函數(shù)定義為

和跳字模型一樣滑蚯,當(dāng)序列長(zhǎng)度T較大時(shí)浪蹂,我們通常在每次迭代時(shí)隨機(jī)采樣一個(gè)較短的子序列來(lái)計(jì)算有關(guān)該子序列的損失。然后告材,根據(jù)該損失計(jì)算詞向量的梯度并迭代詞向量坤次。 通過(guò)微分,我們可以計(jì)算出上式中條件概率的對(duì)數(shù)有關(guān)任一背景詞向量voi(i=1,2,....2m)的梯度為:

該式也可寫(xiě)作

隨機(jī)采樣的子序列有關(guān)其他詞向量的梯度同理可得斥赋。和跳字模型一樣缰猴,訓(xùn)練結(jié)束后,對(duì)于詞典中的任一索引為i的詞疤剑,我們均得到該詞作為背景詞和中心詞的兩組詞向量vi和ui滑绒。
在自然語(yǔ)言處理應(yīng)用中,我們會(huì)使用連續(xù)詞袋模型的背景詞向量隘膘。


近似訓(xùn)練法

我們可以看到疑故,無(wú)論是skip-gram(跳字模型)還是CBOW(連續(xù)詞袋模型),每一步梯度計(jì)算的開(kāi)銷(xiāo)與詞典V的大小相關(guān)弯菊。

因?yàn)橛?jì)算softmax的時(shí)考慮了字典上的所有可能性

當(dāng)詞典較大時(shí)纵势,例如幾十萬(wàn)到上百萬(wàn),這種訓(xùn)練方法的計(jì)算開(kāi)銷(xiāo)會(huì)較大管钳。因此钦铁,我們將使用近似的方法來(lái)計(jì)算這些梯度,從而減小計(jì)算開(kāi)銷(xiāo)才漆。常用的近似訓(xùn)練法包括負(fù)采樣和層序softmax育瓜。

(1)負(fù)采樣(Negative Sample)

我們以跳字模型為例討論負(fù)采樣。

實(shí)際上栽烂,詞典V的大小之所以會(huì)在損失中出現(xiàn),是因?yàn)榻o定中心詞wc生成背景詞wo的條件概率P(w0∣wc)

使用了softmax運(yùn)算恋脚,而softmax運(yùn)算正是考慮了背景詞可能是詞典中的任一詞(使用了全部詞)腺办,并體現(xiàn)在分母上。

下面糟描,我們可以使用σ(x)=1/(1+exp(?x))函數(shù)來(lái)表達(dá)中心詞wc和背景詞wo同時(shí)出現(xiàn)在該訓(xùn)練數(shù)據(jù)窗口的概率怀喉。

σ(x)屬于[0,1]

那么,給定中心詞wc生成背景詞wo的條件概率的對(duì)數(shù)可以近似為:

[上式的含義:中心詞wc與背景詞wo同時(shí)出(D=1)現(xiàn)概率船响,且中心詞wc與噪音詞wk不同時(shí)出現(xiàn)(D=0)的概率躬拢。]

假設(shè)噪聲詞wk在詞典中的索引為ik躲履,上式可改寫(xiě)為:

因此,有關(guān)給定中心詞wc生成背景詞wo的損失是:

假設(shè)詞典V很大聊闯,每次迭代的計(jì)算開(kāi)銷(xiāo)由O(|V|)變?yōu)镺(|K|)工猜。當(dāng)我們把K取較小值時(shí),負(fù)采樣每次迭代的計(jì)算開(kāi)銷(xiāo)將較小菱蔬。

當(dāng)然篷帅,我們也可以對(duì)連續(xù)詞袋模型進(jìn)行負(fù)采樣。有關(guān)給定背景詞
wt-m拴泌、wt-m+1魏身、...、wt+m生成中心詞wc的損失:

在負(fù)采樣中可以近似為:


同樣蚪腐,當(dāng)我們把K取較小值時(shí)箭昵,負(fù)采樣每次迭代的計(jì)算開(kāi)銷(xiāo)將較小。

(2)層序softmax[]

層序softmax是另一種常用的近似訓(xùn)練法回季。它利用了二叉樹(shù)這一數(shù)據(jù)結(jié)構(gòu)家制。樹(shù)的每個(gè)葉子節(jié)點(diǎn)代表著詞典V中的每個(gè)詞。


假設(shè)L(w)為從二叉樹(shù)的根節(jié)點(diǎn)到詞w<的葉子節(jié)點(diǎn)的路徑(包括根和葉子節(jié)點(diǎn))上的節(jié)點(diǎn)數(shù)茧跋。設(shè)n(w,j)為該路徑上第j個(gè)節(jié)點(diǎn)慰丛,并設(shè)該節(jié)點(diǎn)的向量為un(w,j)。以上圖為例:L(w3)=4瘾杭。設(shè)詞典中的詞wi的詞向量為vi诅病。那么,跳字模型和連續(xù)詞袋模型所需要計(jì)算的給定詞wi生成詞w的條件概率為:

其中σ(x)=1/(1+exp(?x))粥烁,leftChild(n)是節(jié)點(diǎn)n的左孩子節(jié)點(diǎn)贤笆,如果判斷x為真,[x]=1讨阻;反之[x]=?1芥永。由于σ(x)+σ(?x)=1,給定詞wi生成詞典V中任一詞的條件概率之和為1這一條件也將滿足:

讓我們計(jì)算給定詞wi生成詞w3的條件概率钝吮。我們需要將wi的詞向量vi和根節(jié)點(diǎn)到w3路徑上的非葉子節(jié)點(diǎn)向量一一求內(nèi)積埋涧。由于在二叉樹(shù)中由根節(jié)點(diǎn)到葉子節(jié)點(diǎn)w3的路徑上需要向左、向右奇瘦、再向左地遍歷棘催,我們得到:

整個(gè)遍歷的路徑已經(jīng)通過(guò)Huffman編碼唯一的確定了

在使用softmax的跳字模型和連續(xù)詞袋模型中,詞向量和二叉樹(shù)中非葉子節(jié)點(diǎn)向量是需要學(xué)習(xí)的模型參數(shù)耳标。

假設(shè)詞典V很大醇坝,每次迭代的計(jì)算開(kāi)銷(xiāo)由O(|V|)下降至O(log2|V|)。

推薦資料:學(xué)習(xí)word2vec的經(jīng)典資料

3.ELMo--動(dòng)態(tài)詞向量

ELMo官網(wǎng):https://allennlp.org/elmo

艾倫研究所開(kāi)發(fā)次坡,并于6月初在NAACL 2018年發(fā)布ELMo(深度語(yǔ)境化的單詞表示)呼猪。

ELMO(Embeddings from Language Models) 画畅,被稱為時(shí)下最好的通用詞和句子嵌入方法,來(lái)自于語(yǔ)言模型的詞向量表示宋距,也是利用了深度上下文單詞表征轴踱,該模型的優(yōu)勢(shì):
(1)能夠處理單詞用法中的復(fù)雜特性(比如句法和語(yǔ)義)
(2)這些用法在不同的語(yǔ)言上下文中如何變化(比如為詞的多義性建模)

ELMo與word2vec最大的不同:
Contextual: The representation for each word depends on the entire context in which it is used. 
(即詞向量不是一成不變的,而是根據(jù)上下文而隨時(shí)變化乡革,這與word2vec或者glove具有很大的區(qū)別)

舉個(gè)例子:針對(duì)某一詞多義的詞匯w="蘋(píng)果"
文本序列1=“我 買(mǎi)了 六斤 蘋(píng)果寇僧。”
文本序列2=“我 買(mǎi)了一個(gè) 蘋(píng)果 7沸版∴铱”
上面兩個(gè)文本序列中都出現(xiàn)了“蘋(píng)果”這個(gè)詞匯,但是在不同的句子中视粮,它們我的含義顯示是不同的细办,一個(gè)屬于水果領(lǐng)域,一個(gè)屬于電子產(chǎn)品呢領(lǐng)域蕾殴,如果針對(duì)“蘋(píng)果”這個(gè)詞匯同時(shí)訓(xùn)練兩個(gè)詞向量來(lái)分別刻畫(huà)不同領(lǐng)域的信息呢笑撞?答案就是使用ELMo。

ELMo是雙向語(yǔ)言模型biLM的多層表示的組合钓觉,基于大量文本茴肥,ELMo模型是從深層的雙向語(yǔ)言模型(deep bidirectional language model)中的內(nèi)部狀態(tài)(internal state)學(xué)習(xí)而來(lái)的,而這些詞向量很容易加入到QA荡灾、文本對(duì)齊瓤狐、文本分類等模型中,后面會(huì)展示一下ELMo詞向量在各個(gè)任務(wù)上的表現(xiàn)批幌。


它首先在大文本語(yǔ)料庫(kù)上預(yù)訓(xùn)練了一個(gè)深度雙向語(yǔ)言模型(biLM)础锐,然后把根據(jù)它的內(nèi)部狀態(tài)學(xué)到的函數(shù)作為詞向量。實(shí)驗(yàn)表明荧缘,這些學(xué)到的詞表征可以輕易地加入到現(xiàn)有的模型中皆警,并在回答問(wèn)題、文本蘊(yùn)含截粗、情感分析等 6 個(gè)不同的有難度的 NLP 問(wèn)題中大幅提高最佳表現(xiàn)信姓。實(shí)驗(yàn)表明顯露出預(yù)訓(xùn)練模型的深度內(nèi)部狀態(tài)這一做法非常重要楣富,這使得后續(xù)的模型可以混合不同種類的半監(jiān)督信號(hào)蜂奸。

3.1 ELMo的安裝與使用

AllenNLP是一個(gè)相對(duì)成熟的基于深度學(xué)習(xí)的NLP工具包,它構(gòu)建于 PyTorch之上乌庶,該工具包中集成了ELMo方法从诲。
可以直接使用pip安裝:

pip install allennlp

適用于python3.6以上的版本

或者,你也可以嘗試一下這個(gè)工具包ELMoForManyLangs:

#基于 ELMo 的向量化方法
#詳細(xì)資料參考 https://github.com/berkay-onder/ELMoForManyLangs

from elmoformanylangs import Embedder
import numpy as np
e = Embedder(r'../auxiliary_data/zhs.model/')
sents = [['今', '天', '天氣', '真', '好', '阿'],
['潮水', '退', '了', '就', '知道', '誰(shuí)', '沒(méi)', '穿', '褲子']]
# the list of lists which store the sentences 
# after segment if necessary.
embs = e.sents2elmo(sents)
print(embs)
print(np.mean(embs[0],axis=0))
print (len(np.mean(embs[0],axis=0)))
# will return a list of numpy arrays 
# each with the shape=(seq_len, embedding_size)
 

使用ELMo獲得詞向量替換Glove的詞向量作為多項(xiàng)特定NLP模型的輸入靡羡,在ELMo的論文實(shí)驗(yàn)中表明具有一定的效果提升:

4.結(jié)束

詞向量技術(shù)為文本的額數(shù)值化表示提供了解決方案系洛,不同的詞向量技術(shù)可以提取詞匯的不同角度或?qū)蛹?jí)的語(yǔ)義信息俊性,作為NLP各項(xiàng)任務(wù)模型的輸入,對(duì)于提升模型的效果覺(jué)有顯著的作用描扯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末定页,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绽诚,更是在濱河造成了極大的恐慌典徊,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩够,死亡現(xiàn)場(chǎng)離奇詭異卒落,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蜂桶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)儡毕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扑媚,你說(shuō)我怎么就攤上這事腰湾。” “怎么了疆股?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵费坊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我旬痹,道長(zhǎng)附井,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任唱凯,我火速辦了婚禮羡忘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘磕昼。我一直安慰自己卷雕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布票从。 她就那樣靜靜地躺著漫雕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峰鄙。 梳的紋絲不亂的頭發(fā)上浸间,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音吟榴,去河邊找鬼魁蒜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兜看。 我是一名探鬼主播锥咸,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼细移!你這毒婦竟也來(lái)了搏予?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弧轧,失蹤者是張志新(化名)和其女友劉穎雪侥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體精绎,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡速缨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捺典。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸟廓。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖襟己,靈堂內(nèi)的尸體忽然破棺而出引谜,到底是詐尸還是另有隱情,我是刑警寧澤擎浴,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布员咽,位于F島的核電站,受9級(jí)特大地震影響贮预,放射性物質(zhì)發(fā)生泄漏贝室。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一仿吞、第九天 我趴在偏房一處隱蔽的房頂上張望滑频。 院中可真熱鬧,春花似錦唤冈、人聲如沸峡迷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绘搞。三九已至,卻和暖如春傅物,著一層夾襖步出監(jiān)牢的瞬間夯辖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工董饰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒿褂,地道東北人圆米。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像啄栓,于是被迫代替她去往敵國(guó)和親榨咐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 關(guān)鍵詞:線性表 1. 線性表(List)的表現(xiàn)形式 零個(gè)或多個(gè)數(shù)據(jù)元素組成的集合 數(shù)據(jù)元素在位置上是有序排列的 數(shù)...
    編程半島閱讀 509評(píng)論 0 0
  • 苦中的快樂(lè)谴供。 時(shí)間真快呀,轉(zhuǎn)眼又有快到了六一兒童節(jié)齿坷。學(xué)校要慶祝六一兒童節(jié)桂肌,所以我們?cè)诹弧5那耙惶炫啪毧砂盐覀兘o累...
    孫逸軒媽媽閱讀 215評(píng)論 0 0
  • 如果再來(lái)一次永淌,我會(huì)往死里對(duì)你好
    曰天曰地閱讀 136評(píng)論 0 0