本發(fā)明涉及信息科學(xué)領(lǐng)域,具體是一種改進(jìn)word2vec詞向量模型的語義計算方法及系統(tǒng)。
背景技術(shù):
將自然語言交給機器學(xué)習(xí)算法來處理,需要將語言進(jìn)行數(shù)學(xué)化處理,詞向量化就是一種方式。進(jìn)行詞向量化最簡單的方式為獨熱碼表示法(one-hotrepresentation),該方法通過創(chuàng)建一個詞表庫,并對詞庫中的每個詞進(jìn)行順序編號來賦予每個詞一個向量,向量的分量只有一個1,其他全為0。這種詞向量表示法有2個缺點:(1)容易產(chǎn)生維數(shù)災(zāi)難;(2)不能很好的刻畫詞與詞之間的相似性,即語義鴻溝。為了克服這種缺陷,hinton在1986年提出分布式表示方法(distributedrepresentation),其基本思想是通過訓(xùn)練將每個詞映射成一個固定長度的k維實數(shù)短向量(k為正整數(shù)),然后將所有向量映射到向量空間,每個向量對應(yīng)空間上的一個點,在空間上計算向量與向量之間的距離,就可以判斷它們之間的相似度。分布式表示法的一種生成詞向量的方式是利用神經(jīng)網(wǎng)絡(luò)算法,該方法通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)最終得到詞向量和語言模型。bengio于2003年提出神經(jīng)網(wǎng)絡(luò)語言模型(neuralnetworklanguagemodel),其核心思想是利用神經(jīng)網(wǎng)絡(luò)建立n-gram語言模型,將每個詞表示成一個浮點向量,然后作為神經(jīng)網(wǎng)絡(luò)的輸入,通過隨機梯度算法對神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行訓(xùn)練,訓(xùn)練完成之后同時得到語言模型和詞向量。
目前比較廣泛應(yīng)用的詞向量化方法是基于word2vec去訓(xùn)練得到詞向量模型,word2vec訓(xùn)練詞向量的過程,就是構(gòu)建一個多層神經(jīng)網(wǎng)絡(luò),然后在給定文本中獲得對應(yīng)的輸入和輸出,在訓(xùn)練過程中不斷修正神經(jīng)網(wǎng)絡(luò)中的參數(shù),最終得到詞向量。word2vec的核心模型就是cbow模型(continuousbag-of-wordsmodel)和skip-gram模型(continuousskip-grammodel),cbow模型是根據(jù)當(dāng)前詞上下文的2n個詞來預(yù)測當(dāng)前詞(設(shè)詞窗大小為n),它的輸入是周圍詞向量之和,輸出是當(dāng)前詞詞向量;而skip-gram模型是根據(jù)當(dāng)前詞本身來預(yù)測周圍有哪些詞,它的輸入是當(dāng)前詞詞向量,輸出是上下文的詞向量。傳統(tǒng)word2vec訓(xùn)練詞向量的效果,在語義功能上體現(xiàn)為簡單的線性關(guān)系,比如說:“男人-皇帝=女人-皇后”、“醫(yī)生-手術(shù)=老師-教學(xué)”等,正是由于這個特性,使得word2vec生成的詞向量具有初步的語義推理能力。
然而,現(xiàn)有技術(shù)中的word2vec沒有充分考慮詞性因素,而詞性是訓(xùn)練詞向量的重要信息,因為詞性本身就涵蓋了語義信息和語法規(guī)則,利用詞性信息可以很好的結(jié)合詞語的搭配順序、規(guī)律和關(guān)系,比如形容詞后面可以加名詞而不能加副詞,因而影響了模型對語義的深層理解。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供了一種加入詞性向量因素的改進(jìn)word2vec詞向量模型的語義計算方法及系統(tǒng)。
本發(fā)明通過以下的方案實現(xiàn):一種改進(jìn)詞向量模型的語義計算方法,包括以下步驟:s1:語料預(yù)處理,對語料進(jìn)行清理,規(guī)范化,分詞操作;
s2:詞性標(biāo)注,對語料預(yù)處理后得到的詞語進(jìn)行標(biāo)注詞性;
s3:向量初始化,對詞性標(biāo)注后得到的詞語和詞性進(jìn)行向量化;
s4:上下文向量整合,對詞語的上下文詞語向量及詞性向量進(jìn)行計算整合;
s5:構(gòu)建哈夫曼樹并訓(xùn)練網(wǎng)絡(luò),優(yōu)化目標(biāo)函數(shù)并判斷誤差是否達(dá)到閾值;
s6:向量獲取,獲取詞語向量和詞性向量。
s7:向量應(yīng)用,應(yīng)用詞語向量和詞性向量進(jìn)行語義計算。
作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟s1中,具體包括:
s11:去除無關(guān)字符,包括去除標(biāo)點符號和亂碼;
s12:統(tǒng)一表達(dá)規(guī)范,將中文語料都轉(zhuǎn)為中文簡體,英文語料統(tǒng)一為英文小寫;
s13:分詞,使用jieba分詞中的搜索引擎分詞模式進(jìn)行分詞。
作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟s2中采用jieba分詞詞典進(jìn)行詞性標(biāo)注。
作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟s3中,具體為:首先設(shè)定向量的維度,然后使用服從均勻分布的數(shù)據(jù)填充向量的每一維度。
作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟s5中,具體包括:
s51:構(gòu)建哈夫曼樹,該哈夫曼樹的葉子節(jié)點為詞向量;
s52:判斷誤差是否達(dá)到閾值,若未達(dá)到閾值,就繼續(xù)訓(xùn)練網(wǎng)絡(luò),并返回步驟s4;若達(dá)到閾值,就停止訓(xùn)練,并執(zhí)行步驟s6。
作為本發(fā)明的進(jìn)一步改進(jìn),還包括步驟s7:對詞語向量和詞性向量進(jìn)行應(yīng)用,具體包括:
s71:詞語向量余弦相似度的語義計算,輸出常用詞的前n個相似詞,所述前n為正整數(shù);
s72:詞語和詞性的語義計算,輸出常用詞對應(yīng)的向量和詞性向量的和的相似詞;
s73:詞語語義范圍的語義計算,選取若干個情感類型的情感詞,遞歸找出各個情感詞相關(guān)的詞語,并繪制關(guān)系圖。
本發(fā)明還提供了一種詞向量的語義計算系統(tǒng),其包括:
語料預(yù)處理模塊,用于進(jìn)行語料預(yù)處理;
詞性標(biāo)注模塊,用于對每個詞的詞性進(jìn)行標(biāo)注;
向量初始化模塊,用于對詞語向量和詞性向量進(jìn)行隨機向量化;
上下文向量整合模塊,用于將詞語向量和詞性向量求和,求和的結(jié)果除以詞語個數(shù)得到向量均值,向量均值與中心詞的詞性向量取差值得到向量整合結(jié)果;
中心詞向量調(diào)整模塊,用于對中心詞向量進(jìn)行調(diào)整,優(yōu)化目標(biāo)函數(shù);
向量獲取模塊,用于獲取詞語向量和詞性向量。
作為本發(fā)明的進(jìn)一步改進(jìn),所述語料預(yù)處理模塊包括:
無關(guān)字符去除子模塊,用于去除無關(guān)字符,包括去除標(biāo)點符號和亂碼;
表達(dá)規(guī)范子模塊,用于統(tǒng)一表達(dá)規(guī)范,將中文語料都轉(zhuǎn)為中文簡體,英文語料統(tǒng)一為英文小寫;
分詞子模塊,用于使用jieba分詞中的搜索引擎分詞模式進(jìn)行分詞。
作為本發(fā)明的進(jìn)一步改進(jìn),所述詞性標(biāo)注模塊采用jieba分詞詞典進(jìn)行詞性標(biāo)注。
作為本發(fā)明的進(jìn)一步改進(jìn),所述向量初始化模塊通過設(shè)定向量的維度,然后使用服從均勻分布的數(shù)據(jù)填充向量的每一維度。
作為本發(fā)明的進(jìn)一步改進(jìn),所述中心詞向量調(diào)整模塊包括:
訓(xùn)練子模塊,用于構(gòu)建哈夫曼樹,該哈夫曼樹的葉子節(jié)點為詞向量;
誤差判斷子模塊,用于判斷誤差是否達(dá)到閾值,若未達(dá)到閾值,就繼續(xù)訓(xùn)練網(wǎng)絡(luò);若達(dá)到閾值,就停止訓(xùn)練。
作為本發(fā)明的進(jìn)一步改進(jìn),還包括向量應(yīng)用模塊,用于對詞語向量和詞性向量進(jìn)行應(yīng)用;所述向量應(yīng)用模塊包括:
詞語向量余弦相似度的語義計算子模塊,用于輸出常用詞的前n個相似詞,所述前n為正整數(shù);
詞語和詞性的語義計算子模塊,用于輸出常用詞對應(yīng)的向量和詞性向量的和的相似詞;
詞語語義范圍的語義計算子模塊,用于選取若干個情感類型的情感詞,遞歸找出各個情感詞相關(guān)的詞語,并繪制關(guān)系圖。
相比于現(xiàn)有技術(shù),本發(fā)明加入了詞性向量的考慮,并且根據(jù)現(xiàn)有的word2vec模型進(jìn)行改進(jìn)。同時,根據(jù)該改進(jìn)后的模型進(jìn)行了創(chuàng)新的應(yīng)用,拓展了word2vec進(jìn)行語義計算的功能。
為了更好地理解和實施,下面結(jié)合附圖詳細(xì)說明本發(fā)明。
附圖說明
圖1是本發(fā)明的改進(jìn)詞向量模型的語義計算方法的步驟流程圖。
圖2是現(xiàn)有技術(shù)的cbow和skip-gram模型示意圖。
圖3是現(xiàn)有技術(shù)的cbow模型的結(jié)構(gòu)圖。
圖4是本發(fā)明改進(jìn)后的模型示意圖。
圖5是本發(fā)明改進(jìn)后的結(jié)構(gòu)圖。
圖6是輸出層的原理示意圖。
圖7是情感相關(guān)詞語的關(guān)系圖
圖8是本發(fā)明的語義計算系統(tǒng)的框圖。
具體實施方式
以下結(jié)合實施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實施方式不限于此。
本發(fā)明為了解決現(xiàn)有技術(shù)的缺陷,提供了一種改進(jìn)word2vec詞向量模型的語義計算方法及系統(tǒng)。
具體通過以下實施例進(jìn)行介紹:
首先,先對本發(fā)明的改進(jìn)詞向量模型的語義計算方法的整體流程進(jìn)行介紹。具體請參閱圖1,其為本發(fā)明的改進(jìn)詞向量模型的語義計算方法的步驟流程圖。本發(fā)明提供了一種改進(jìn)詞向量模型的語義計算方法,包括以下步驟:
s1:語料預(yù)處理。具體的所述步驟s1中包括:
s11:去除無關(guān)字符,包括去除標(biāo)點符號和亂碼。
s12:統(tǒng)一表達(dá)規(guī)范,將中文語料都轉(zhuǎn)為中文簡體,英文語料統(tǒng)一為英文小寫。
s13:分詞,使用jieba分詞中的搜索引擎分詞模式進(jìn)行分詞。
s2:詞性標(biāo)注,對語料預(yù)處理后得到的詞語進(jìn)行標(biāo)注詞性。具體的,所述步驟s2中采用jieba分詞詞典進(jìn)行詞性標(biāo)注,可以標(biāo)注句子分詞后每個詞的詞性,詞性標(biāo)注集采用北大計算所詞性標(biāo)注集,屬于基于統(tǒng)計模型的標(biāo)注方法。
s3:向量初始化,對詞性標(biāo)注后得到的詞語和詞性進(jìn)行向量化所述步驟s3中,具體為:首先設(shè)定向量的維度,然后使用服從均勻分布的數(shù)據(jù)填充向量的每一維度。
s4:上下文向量整合,對詞語的上下文詞語向量及詞性向量進(jìn)行計算整合,具體為:將詞語向量和詞性向量求和,求和的結(jié)果除以詞語個數(shù)得到向量均值,向量均值與中心詞的詞性向量取差值得到向量整合結(jié)果。
s5:構(gòu)建哈夫曼樹并訓(xùn)練網(wǎng)絡(luò),優(yōu)化目標(biāo)函數(shù)并判斷誤差是否達(dá)到閾值;所述步驟s5中,具體包括:
s51:構(gòu)建哈夫曼樹,該哈夫曼樹的葉子節(jié)點為詞向量。
s52:判斷誤差是否達(dá)到閾值,若未達(dá)到閾值,就繼續(xù)訓(xùn)練網(wǎng)絡(luò),并返回步驟s4;若達(dá)到閾值,就停止訓(xùn)練,并執(zhí)行步驟s6。
s6:向量獲取,獲取詞語向量和詞性向量。
s7:對詞語向量和詞性向量進(jìn)行應(yīng)用。具體的,所述步驟s7包括:
s71:詞語向量余弦相似度的語義計算,輸出常用詞的前n個相似詞,所述前n為正整數(shù)。
s72:詞語和詞性的語義計算,輸出常用詞對應(yīng)的向量和詞性向量的和的相似詞。
s73:詞語語義范圍的語義計算,選取若干個情感類型的情感詞,遞歸找出各個情感詞相關(guān)的詞語,并繪制關(guān)系圖。
以下具體介紹本發(fā)明的具體原理和過程:
首先,本發(fā)明需要針對現(xiàn)有的word2vec詞向量化模型進(jìn)行改進(jìn),具體的改進(jìn)步驟如下:
步驟1.首先建立詞語與詞性的詞典。
現(xiàn)有的詞向量訓(xùn)練方法,無論是神經(jīng)概率語言模型還是word2vec,都沒有考慮詞性,這對訓(xùn)練詞向量來說是一種信息缺失。因此在本發(fā)明中,以cbow模型為例,輸入上下文的詞性向量并且將它們加入到訓(xùn)練的過程中,成為與上下文詞向量共同預(yù)測當(dāng)前詞詞向量的重要信息,所以跟傳統(tǒng)方法不同,一開始要先對語料中所有的詞分別構(gòu)建詞語和詞性一一對應(yīng)的詞典。
另外,如果加入詞性訓(xùn)練僅從改變語料方面考慮而不改模型和源碼,可以直接導(dǎo)入由詞語和詞性先后一一對應(yīng)的混合語料,在訓(xùn)練模型設(shè)置窗口詞時將窗口設(shè)置為原來的2倍,其他訓(xùn)練參數(shù)不變,因為在jieba分詞中每一個詞都附帶而且唯一匹配一個詞性,這種改語料不改模型的方法跟本發(fā)明中通過改模型的方法有所不同。
步驟2.初始化詞向量的同時,通過同樣的方法來初始化詞性向量。
在以往的方法中,用神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到詞向量的第一步便是隨機初始化詞向量,然后投入神經(jīng)網(wǎng)絡(luò)中訓(xùn)練,進(jìn)而不斷調(diào)整各種參數(shù)包括詞向量本身,本發(fā)明以初始化詞向量的方法來隨機初始化詞性向量,目的是讓詞向量和詞性向量保持維度相等
步驟3.模型訓(xùn)練過程加入詞性向量的考慮。
原來的word2vec中用的兩個重要模型——cbow模型(continuousbag-of-wordsmodel)和skip-gram模型(continuousskip-grammodel)。請同時參閱圖2,其為現(xiàn)有技術(shù)的cbow和skip-gram模型示意圖。兩個模型都包含三層:輸入層、投影層和輸出層,cbow模型是在已知當(dāng)前詞wt的上下文wt-2,wt-1,wt+1,wt+2的前提下,預(yù)測當(dāng)前詞wt,而skip-gram模型則相反,是在已知當(dāng)前詞wt的前提下,預(yù)測上下文wt-2,wt-1,wt+1,wt+2。對于這兩個模型,word2vec給出了兩套框架,分別基于層次softmax(hierarchicalsoftmax)和負(fù)采樣(negativesampling)來設(shè)計。
進(jìn)一步再參閱圖3,其為現(xiàn)有技術(shù)的cbow模型的結(jié)構(gòu)圖。
該結(jié)構(gòu)包含三層:輸入層、投影層和輸出層。
1.輸入層:包含context(w)中2n個詞的詞向量v(context(w)1),v(context(w)2),…,v(context(w)2n)。
2.投影層:將輸入層的2n個詞向量做求和累加,即
3.輸出層:輸出層對應(yīng)一棵二叉樹,以語料中出現(xiàn)過的詞為葉子節(jié)點,以各詞在語料中出現(xiàn)的次數(shù)作為權(quán)值構(gòu)造出來的哈夫曼樹,利用哈夫曼樹上每一個分支都當(dāng)做一次二分類,每一次分類就產(chǎn)生一個概率,將這些概率乘起來就是所需的p(w|context(w))。
本發(fā)明針對已有的word2vec方法進(jìn)行改進(jìn),加入對詞性因素的考慮,對于使用cbow模型的word2vec,改進(jìn)后的模型如圖4和圖5所示,其分別為改進(jìn)后的模型示意圖和結(jié)構(gòu)圖。
其中w表示詞word,f表示詞性flag。
假設(shè)context(w)由w前后各n個詞和對應(yīng)的n個詞性共同構(gòu)成,以樣本(context(w),w)為例,對這四個層做簡要說明。
1.輸出層(inputlayer):選擇窗口詞的時候抽出每個窗口詞以及它的詞性所對應(yīng)的向量,包含context(w)中2n個詞語向量v(context(w)1),v(context(w)2),…,v(context(w)2n)以及這些詞對應(yīng)的2n個詞性向量v(context(f)1),v(context(f)2),…,v(context(f)2n)。
2.投影層(projectionlayer):將輸入層的2n個詞向量和對應(yīng)的2n個詞性向量做求和累加,即將詞向量和詞性向量共同構(gòu)成的窗口內(nèi)所有向量求和,為
3.整合層(subtractionlayer):詞語向量和詞性向量求和,求和的結(jié)果除以詞語個數(shù)得到向量均值,引入整合層,用于減去中心詞的詞性向量,向量均值與中心詞的詞性向量取差值得到向量整合結(jié)果nw。
4.輸出層(outputlayer):輸出層對應(yīng)一棵二叉樹,以語料中出現(xiàn)過的詞為葉子節(jié)點,以各詞在語料中出現(xiàn)的次數(shù)當(dāng)權(quán)值構(gòu)造出來的哈夫曼樹,利用哈夫曼樹上每一個分支都當(dāng)做一次二分類,每一次分類就產(chǎn)生一個概率,將這些概率乘起來就是所需的p(w|context(w))。
接著,在對現(xiàn)有的word2vec模型進(jìn)行改進(jìn)后,需要對模型進(jìn)行訓(xùn)練,其中對于cbow模型來說,訓(xùn)練過程的步驟如下:
步驟1.隨機初始化詞向量和詞性向量,使用服從均勻分布的數(shù)據(jù)填充向量的每一維度。
步驟2.將中心詞的上下文窗口內(nèi)的詞語和詞性向量累加求和,因為上下文已經(jīng)考慮了詞性,所以該向量實際上是融合了詞性的向量因素的一個結(jié)果。
步驟3.求和累加之后,除以詞語個數(shù)得到向量均值,向量均值與中心詞的詞性向量取差值得到向量整合結(jié)果。
步驟4.構(gòu)建哈夫曼樹,構(gòu)建哈夫曼樹的葉子節(jié)點是詞向量而不包括詞性向量,原因是哈夫曼樹是以各詞在語料中出現(xiàn)的次數(shù)作為權(quán)值來構(gòu)造,相比單獨的詞語來說,詞性出現(xiàn)的次數(shù)要多得多,因為一個詞性對應(yīng)很多個詞,如果也用詞性構(gòu)造哈夫曼樹,就會出現(xiàn)不合理的情況,平攤誤差的時候只平攤給詞向量,詞性向量不進(jìn)行更新,因為上下文的詞和詞性向量的索引是一一對應(yīng)的,而改進(jìn)方案的目的是對詞向量進(jìn)行更新,詞性向量本身相當(dāng)于“催化劑”的作用,用于影響詞向量的優(yōu)化過程,它本身的參數(shù)不進(jìn)行優(yōu)化。
步驟5.判斷誤差是否達(dá)到閾值,若未達(dá)到閾值,就繼續(xù)訓(xùn)練網(wǎng)絡(luò),若達(dá)到閾值,就停止訓(xùn)練。
步驟6.向量獲取,分別輸出詞語及其詞性向量。
請同時參閱圖6,其為輸出層的原理示意圖,以下具體輸出層概率計算的原理:
層次softmax(hierachicalsoftmax)是一種對輸出層進(jìn)行優(yōu)化的策略,它利用哈夫曼樹來計算概率值,語料的詞以出現(xiàn)的次數(shù)當(dāng)權(quán)值來構(gòu)造哈夫曼樹,葉子節(jié)點為n個,分別對應(yīng)詞典中的詞,相對應(yīng)的非葉子節(jié)點就有n-1個,假設(shè)約定將權(quán)值較大的子節(jié)點放在左邊并且編碼為1,將權(quán)值較小的子節(jié)點放在右邊并且編碼為0,將一個節(jié)點分類時,分到左邊為負(fù)類,分到右邊為正類,那么邏輯回歸得到一個節(jié)點被分為正類的概率為:
1.第一次:
2.第二次:
3.第三次:
4.第四次:
哈夫曼樹中必有一條從根節(jié)點到詞w的唯一路徑,計算葉節(jié)點的概率就是將路徑上每個分類器的概率相乘,對于詞典的每個詞w,假設(shè)pw表示從根節(jié)點到w對應(yīng)節(jié)點路徑,lw表示pw中包含節(jié)點的個數(shù),
其中
經(jīng)過推導(dǎo)得到對數(shù)似然函數(shù)之后,求最大概率,而關(guān)于該輸出層的概率計算,在改進(jìn)后的模型中,也采用相同的原理。
以下結(jié)合具體例子,針對改進(jìn)后的word2vec模型的應(yīng)用和效果進(jìn)行說明:
本發(fā)明改進(jìn)的word2vec方法,利用詞性向量提供更加豐富的信息,在訓(xùn)練詞向量的過程中加入詞性的考慮。
例如對于句子,“我很喜歡做數(shù)學(xué)題”,如果按照經(jīng)典word2vec的cbow模型方法,就是用前面3個詞“我很喜歡做”去預(yù)測下一個詞也就是第4個詞“數(shù)學(xué)題”,現(xiàn)在加入詞性的信息變成“我pron(指示代詞)很喜歡adv(副詞)做v(動詞)數(shù)學(xué)題n(名詞)”,原來是4個詞,現(xiàn)在加上詞對應(yīng)的詞性提供的向量信息,共同來預(yù)測第4個詞。特別地,詞性是事先隨機初始化之后的,在調(diào)整優(yōu)化的時候沒有優(yōu)化這些向量。
改進(jìn)詞向量模型之后,本發(fā)明從模型的效果上證明本方法拓展了word2vec在語義計算上的功能。
另外,本發(fā)明用多種方法來檢驗詞向量化的效果,同時將改進(jìn)后的模型做了創(chuàng)新的應(yīng)用,包括詞語和詞性的語義計算、詞語語義范圍的語義計算,跟改進(jìn)前的word2vec方法結(jié)果做對比證明,本裝置拓展了word2vec在語義計算上的功能,豐富了詞向量的語義信息。本發(fā)明的詞向量方法,效果優(yōu)于改進(jìn)前word2vec的詞向量化方法,檢驗方法如下:
1.詞語向量余弦相似度的語義計算,輸出常用詞的前n個相似詞,輸出相似度進(jìn)行對比。
2.詞語和詞性的語義計算,輸出常用詞對應(yīng)的向量和詞性向量的和的相似詞,觀察是否有語義的規(guī)律。
例如:
打?qū)?yīng)向量[2.1,-1.2,0.3]
v(動詞)對應(yīng)向量[0.2,-3.0,-2.0]
打+v(動詞)求和之后[2.3,-4.2,-1.7]
假如“打”輸出一個向量,“v(動詞)”也輸出一個向量那么“打”(向量)+“v”(向量)的結(jié)果去找前n個相似詞,輸出的是球(打球)、架(打架)等名詞,而避免出現(xiàn)其他詞性或者像“打太陽”這種不符合語義的名詞“太陽”這類情況。
3.測試模型得到少量常用詞的前n個相似詞及相似度,以相似度的平均值降序排序,觀察語義的相似度是否與向量的相似度正相關(guān)。
例如:
通過降序排序后:
4.詞語語義范圍的語義計算,選取若干個情感類型的情感詞,遞歸找出各個情感詞相關(guān)的盡可能多且質(zhì)量高的詞語,并繪制關(guān)系圖,如圖7所示。
這個是通過多層嵌套的方法去尋找某領(lǐng)域相似詞的關(guān)系,從而來拓展情感詞典,比如說原來的情感詞典沒辦法找到“藍(lán)瘦”、“香菇”這種情感新詞,通過這種方法,能夠較好地擴充情感詞典。
加入詞性的詞向量改進(jìn)模型,拓展了word2vec在語義計算上的功能,豐富了詞向量的語義信息,可以結(jié)合詞向量和詞性向量進(jìn)行語義計算。
另外,請同時參閱圖8,其為本發(fā)明的語義計算系統(tǒng)的框圖。本發(fā)明還提供了一種詞向量的語義計算系統(tǒng),其包括:語料預(yù)處理模塊1,詞性標(biāo)注模塊2,向量初始化模塊3,上下文向量整合模塊4,中心詞向量調(diào)整模塊5,向量獲取模塊6,向量應(yīng)用模塊7。
所述語料預(yù)處理模塊1,用于進(jìn)行語料預(yù)處理。
所述詞性標(biāo)注模塊2,用于對每個詞的詞性進(jìn)行標(biāo)注。具體的,所述詞性標(biāo)注模塊采用jieba分詞詞典進(jìn)行詞性標(biāo)注。
所述向量初始化模塊3,用于對詞語向量和詞性向量進(jìn)行隨機向量化。具體的,所述向量初始化模塊通過設(shè)定向量的維度,然后使用服從均勻分布的數(shù)據(jù)填充向量的每一維度。
所述上下文向量整合模塊4,用于將詞語向量和詞性向量求和,求和的結(jié)果除以詞語個數(shù)得到向量均值,向量均值與中心詞的詞性向量取差值得到向量整合結(jié)果。
所述中心詞向量調(diào)整模塊5,用于構(gòu)建哈夫曼樹并訓(xùn)練網(wǎng)絡(luò),優(yōu)化目標(biāo)函數(shù)并判斷誤差是否達(dá)到閾值。
所述向量獲取模塊6,用于獲取詞語向量和詞性向量。
所述向量應(yīng)用模塊7,用于對詞語向量和詞性向量進(jìn)行應(yīng)用。
進(jìn)一步,所述語料預(yù)處理模塊1包括:無關(guān)字符去除子模塊11、表達(dá)規(guī)范子模塊12和分詞子模塊13。
所述無關(guān)字符去除子模塊11,用于去除無關(guān)字符,包括去除標(biāo)點符號和亂碼。
所述表達(dá)規(guī)范子模塊12,用于統(tǒng)一表達(dá)規(guī)范,將中文語料都轉(zhuǎn)為中文簡體、英文語料統(tǒng)一為英文小寫。
所述分詞子模塊13,用于使用jieba分詞中的搜索引擎分詞模式進(jìn)行分詞。
進(jìn)一步,所述中心詞向量調(diào)整模塊5包括:構(gòu)建子模塊51和誤差判斷子模塊52。
所述構(gòu)建子模塊51,用于構(gòu)建哈夫曼樹,該哈夫曼樹的葉子節(jié)點為詞向量。
所述誤差判斷子模塊52,用于判斷誤差是否達(dá)到閾值,若未達(dá)到閾值,就繼續(xù)訓(xùn)練網(wǎng)絡(luò);若達(dá)到閾值,就停止訓(xùn)練。
進(jìn)一步,所述向量應(yīng)用模塊7包括:詞語向量余弦相似度的語義計算子模塊71、詞語和詞性的語義計算子模塊72和詞語語義范圍的語義計算子模塊73。
所述詞語向量余弦相似度的語義計算子模塊71,用于輸出常用詞的前n個相似詞,所述前n為正整數(shù)。
所述詞語和詞性的語義計算子模塊72,用于輸出常用詞對應(yīng)的向量和詞性向量的和的相似詞。
所述詞語語義范圍的語義計算子模塊73,用于選取若干個情感類型的情感詞,遞歸找出各個情感詞相關(guān)的詞語,并繪制關(guān)系圖。
本發(fā)明中的詞向量的語義計算系統(tǒng)與上述的哈弗曼樹改進(jìn)詞向量模型的語義計算方法的原理相同,故這里就不贅述。
相比于現(xiàn)有技術(shù),本發(fā)明加入了詞性向量因素的考慮,并根據(jù)現(xiàn)有的word2vec模型進(jìn)行改進(jìn)。同時,根據(jù)該改進(jìn)后的模型進(jìn)行了創(chuàng)新的應(yīng)用,拓展了word2vec進(jìn)行語義計算的功能。
上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護范圍之內(nèi)。