楊 政,易綿竹
(信息工程大學 洛陽校區(qū),洛陽 471003)
由于信息科技日新月異的變革和網(wǎng)絡數(shù)據(jù)洪流的沖擊,人們日常使用的語言在不斷發(fā)生著變化,有越來越少使用的舊詞匯被淘汰,也有更多的新詞匯大量涌現(xiàn).每一種新詞的出現(xiàn)和變化發(fā)展都蘊含了不同的情感意義.因此,對于情感詞的新詞發(fā)現(xiàn)以及新詞的傾向性分析研究一直是情感分析中的熱點問題.
但是,新詞的產生伴隨著多種情緒的表達,這使得一個新詞可能包含多種情感傾向,而其中每種傾向的重要度各不相同.因此本文提出基于詞向量的新詞情感傾向性分析方法,通過量化的方式分析新詞可能含有的多種情感傾向.同時,通過訓練詞向量,可以對具有相似情感傾向的情感詞進行聚類分析,尋找近義詞.
對新詞的發(fā)現(xiàn)和對新詞進行情感分類的研究,國外目前已有大量的相關工作,對于文本情感分析也取得不少研究成果,但是國內對于短文本,例如情感短語或情感詞的研究可分為兩種,一是基于情感詞典和規(guī)則的短文本情感分析,二是基于機器學習的短文本情感分析.
基于情感詞典的情感分析有肖江[1]等采用相似度方法構建相關領域情感詞典,有Jo[2]等基于“主題-句子”關系的情感分類方法,在詞上同時標記主題和情感兩類標簽,有楊立月[3]等構建的微博情感詞典,包括開源情感詞典、具有時代特征的網(wǎng)絡情感詞典以及具有明顯情感傾向的語氣情感詞典.基于機器學習的情感分類方法有2013年Liu[4]等提出的將Co-training協(xié)同訓練算法和SVM相結合進行的情感分析.2016年Dey[5]等利用Bayes算法進行的情感分析.
但是,情感新詞的發(fā)現(xiàn)不僅限于圍繞情感詞典發(fā)現(xiàn)的詞語,很多新詞的產生都富含情感的標簽.例如“閨蜜”雖然是名詞,但是能表達一個人對另一個人蘊含的親密情緒.除此之外,一個情感新詞的情感也并不是單一的分類,而是有多重情緒在其中的,并且比重也不相同.所以對情感新詞的傾向應該是多分類的.因此,本文提出基于詞向量的中文新詞情感傾向性分析.
自然語言處理領域一個重要攻克方向就是中文分詞問題.中文語言處理的過程不像西方語言一樣在詞與詞之間有天然的分界線,所以分詞問題就可以在很大程度上影響接下來的很多步驟,例如關系抽取、自動文摘等.而現(xiàn)在大多的分詞方法都是根據(jù)詞庫進行的,那么未登錄詞的問題就顯得更為重要[6,7].中文的書寫沒有首字母大寫,也沒有專名號等,因此計算機難以辨認人名地名等專有名詞.除專有名詞外,網(wǎng)絡用語、品牌機構名、縮略語、簡寫詞等詞匯,它們的出現(xiàn)和演變似乎完全無規(guī)律可尋.隨著語言處理的重要性不斷提高,中文分詞領域的研究都在集中攻克這一難關.自動發(fā)現(xiàn)新詞成為了關鍵的環(huán)節(jié).
新詞挖掘的傳統(tǒng)方法是,首先對文本進行分詞,假定未能成功匹配的文本剩余片段是新詞,然后提取這些片段[8].但是,分詞結果的準確性是依賴于分詞詞庫的完整性的,如果分詞詞庫中完全沒有新詞,那么分詞的結果就可能導致挖掘的“新詞”難以成詞.
那么新詞挖掘需要另辟蹊徑,一種成熟的想法是,不依賴于任何已建立好的詞庫,而僅僅根據(jù)詞本身含有的特征,在較大規(guī)模的語料中將可能成詞的文本片段全都提取出來,不論該詞是新詞還是舊詞.然后,將這個提取的詞庫中的詞和已有詞庫進行比較,就可以找出新詞了[9-11].
判斷一個詞是否可以成詞的首要標準是該詞的凝合度[12].例如在約5900萬字的訓練語料庫中,出現(xiàn)頻率超過150的兩個字段,“的設計”的出現(xiàn)頻率比“設計感”要高,但是在人們的認知中“設計感”才是一個詞,這就說明“設計”和“感”的結合程度更緊密,但是“設計”和“的”的結合就沒有達到人們認知中的緊密程度.
下面將通過計算證明“設計感”一詞的內部凝固程度比“的設計”要高.如果“設計”一詞和“感”在文本中的出現(xiàn)是獨立的,并且是隨機的,那么計算這3個字被拼湊到一起的概率.在該5900萬字的語料庫中,“設計”一詞出現(xiàn)了8491次,該詞出現(xiàn)的概率約為0.000 0143.“感”字在語料中出現(xiàn)了59 448次,出現(xiàn)的概率約為0.000 9321.如果這兩個字段之間隨機且相互獨立,那么“設計感”一詞出現(xiàn)的概率就應該是0.000 0143×0.000 9321,約為 1.33×10-7.但事實上,“設計感”一詞在該語料中出現(xiàn)了185次,出現(xiàn)概率約為3.13×10-6,大約是預測值的46倍.以此類推,統(tǒng)計語料可發(fā)現(xiàn)“的”字的出現(xiàn)概率約為0.0343,因而“的”和“設計”隨機組合到一起的概率應當為0.0343×0.000 0143,約為4.904×10-6,出現(xiàn)的頻次應當在290次,這個數(shù)據(jù)與“的設計”在語料中出現(xiàn)的頻次比較接近,該字段出現(xiàn)的頻次為1816,是預測值的6.26倍.從以上的計算可以看出,“設計感”的結合更緊密,該字段是一個有意義的搭配的可能性更大,而“的設計”的出現(xiàn)則更有可能是“的”和“設計”這兩個字段被隨機拼接到一起的.
但是,一個值得注意的問題是,計算的過程中不存在先驗知識.換言之,“設計感”一詞可能是由“設計”和“感”組合而成,也可能是“設”和“計感”組合而成,因此在計算的時候需要枚舉一個字段的多種組合方法,然后取概率最大的組合方式.
一個詞之所以成詞除了其內部的凝合度之外,還有一個標準就是該詞外部的自由度[13].例如“輩子”的用法,除了“一輩子”、“這輩子”、“上輩子”、“下輩子”等用法外,在“輩子”前面添加字就沒有很多選擇了.“輩子”這個字段左邊可以出現(xiàn)的字比較有限,因此在計算凝合度時,“輩子”并不單獨成詞,真正成詞的其實是“一輩子”、“這輩子”這樣的整體.
因此需要添加“信息熵”的概念,信息熵反映了獲得一個事件的結果后會帶來多大的信息量.如果一個事件某個結果的發(fā)生概率為p,當該結果出現(xiàn)時,將被得到的信息量就被定義為-log(p).p的值越小,得到的信息量就越大.
鄰接熵是Huang等[14]提出的判斷一個字串是否成詞的重要統(tǒng)計量.鄰接熵統(tǒng)計量利用信息熵來衡量候選新詞t的左鄰字符和右鄰字符的不確定性.不確定性越高,表明候選新詞t的前后字符串越混亂,越不穩(wěn)定,所以其成詞的可能性就越高.
例如在實驗用語料中,“杯子”一詞一共出現(xiàn)了1080次,“輩子”一詞一共出現(xiàn)了4030次,兩者的右鄰字集合的信息熵分別為4.7374和6.1655,數(shù)值上是接近的.但“杯子”的左鄰字則用例非常豐富.例如“加杯子”、“拿杯子”、“用杯子”、“新杯子”、“舊杯子”、“收杯子”、“摔杯子”等幾十種不同的用法.計算得出“杯子”所有左鄰字的信息熵為4.9745.但“輩子”的左鄰字則相對少了很多,在語料庫中出現(xiàn)的4030個“輩子”中有3240個是“一輩子”,414個“這輩子”,261個“下輩子”,78 個“上輩子”,除此之外還有“n 輩子”、“兩輩子”等15種比較罕見的用法.所有左鄰字的信息熵僅為1.3679.
除了左鄰字外,一些文本片段雖然左鄰字用法很多,右鄰字用例卻非常貧乏,例如“國慶”、“托兒”、“鵝卵”等,這些詞單獨成詞也是不符合常理的.
因此,一個短語或詞的自由運用程度可以定義為這個短語的左鄰字信息熵和右鄰字信息熵中的較小值.
使用詞向量來表示詞的方法很早之前就出現(xiàn)了,一般叫做1-of-N representation,也有叫獨熱表示法等等,但是這種方法使用的維度是整個詞匯表的大小.對于詞表中每個詞,將該詞對應位置上的0置為1.例如一個有5個詞的詞表,第二個詞answer的向量表示就是(0,1,0,0,0),第五個詞hungry的向量表示就是(0,0,0,0,1).因此可以看出,一個詞匯表的詞匯量一般非常大,所以這種詞匯向量的表達方式稀疏程度非常大,表達效率也不高[15].
解決這個問題的方法是Dristributed representation,該方法是通過訓練,將每個詞表示為一個較短的向量,向量的每個維度表達一個語義信息[16],但是這個向量每個維度具體表達什么意義的可解釋性不好.在Word2Vec出現(xiàn)前,一般使用神經網(wǎng)絡訓練詞向量從而處理詞.一般分為CBOW (Continuous Bag-of-Words與Skip-Gram兩種模型[17-19].CBOW模型的輸入是文本中一個詞對應的上下文詞的詞向量,而輸出是該詞的詞向量.例如句子片段“…distributed representations which encode the relevant grammatical relations…”上下文大小為6,輸出詞是“encode”,那么輸入就應當是“encode”的前 3 個詞和后3個詞的詞向量.需要說明的是,這6個詞是沒有先后順序的,使用的是詞袋模型.而Skip-Gram模型和CBOW模型相反的,其輸入是一個詞的詞向量,而輸出是該詞上下文詞語的詞向量.如上例中,Skip-Gram模型的輸入為“encode”的詞向量,而輸出則是“encode”上下文各3個詞,一共6個詞的詞向量.而Word2Vec則使用哈夫曼數(shù)的數(shù)據(jù)結構代替了神經網(wǎng)絡模型,同樣也分為CBOW和Skip-Gram兩種模型.
首先分析CBOW模型.第一步需要定義詞向量的維度大小為M,以及該字段的上下文大小2c,這樣對于訓練樣本中的每一個詞,其前面的c個詞和后面的c個詞就作為CBOW模型的輸入,輸出為所有詞匯的詞向量w.算法步驟如算法1.
算法1.CBOW模型算法(1)以訓練語料為樣本建立哈夫曼樹;(2)隨機初始化所有的模型參數(shù)θ和詞向量;(3)進行梯度上升迭代過程,對于訓練集中的每一個樣本(context(w),w)做如下處理:(3.1)e=0,計算images/BZ_251_1563_2166_1809_2220.png∑images/BZ_251_1357_2260_1524_2310.png(3.2)for j = 2 toimages/BZ_251_1572_2230_1614_2267.png,計算:()images/BZ_251_1357_2310_1520_2360.pngimages/BZ_251_1357_2360_1486_2402.pngimages/BZ_251_1357_2402_1549_2444.png(4)對于 context(w)中的每一個詞向量Xi(共2c個)進行更新:images/BZ_251_1333_2519_1445_2553.png;(5)如果梯度收斂,則結束梯度迭代,否則返回第(3)步.
而對于Skip-Gram模型,該模型的輸入輸出與CBOW模型相同,訓練算法如算法2.
算法2.Skip-Gram模型算法(1)以訓練語料為樣本建立哈夫曼樹;(2)隨機初始化所有的模型參數(shù)θ和詞向量;(3)進行梯度上升迭代過程,對于訓練集中的每一個樣本(w,context(w))做如下處理:
images/BZ_252_251_546_418_596.png)(for i=1 to 2c e=0 for j = 2 to lw,計算:(images/BZ_252_251_600_414_650.png)images/BZ_252_251_663_380_705.png images/BZ_252_251_716_430_757.pngimages/BZ_252_226_776_330_801.png(4)如果梯度收斂,則結束梯度迭代,否則返回第(3)步.
在Word2Vec中,除了基于哈夫曼樹的方法訓練模型外,還有基于負采樣的方法[20].因為一個詞如果過于生僻,則哈夫曼樹的查找層級就會比較多.而采用負采樣的方法時,每次只是通過采樣n個不同的中心詞做負例,就可以訓練模型.
基于詞向量的新詞情感傾向性分析是首先利用上文中提及的凝合度、信息熵以及詞頻等計算量,通過一定的閾值設定發(fā)現(xiàn)新詞.然后,利用Word2Vec通過對訓練語料的學習,生成詞表中所有詞的詞向量,而后找出所有新詞詞表中與其相似度最高的幾個詞.該新詞發(fā)現(xiàn)及情感傾向分析方法的構建架構如圖1所示.
圖1 新詞發(fā)現(xiàn)及情感傾向分析設計架構
該方法首先要將語料中所有字分成長度小于5的字段,然后對字段進行計算凝合度以及信息熵.計算完成后,選擇處于某閾值內的詞作為新詞.將新詞添加進分詞詞表中后,對語料進行分詞處理,分詞后訓練所有詞的詞向量.隨后,計算所有新詞的中,與每個詞距離最近的前n個詞.最后進行情感傾向分析.具體的構建過程如下:
步驟1.從待檢索的文本庫中通過對xml語言或html語言的分析,將網(wǎng)頁中的文本內容提取出來.
步驟2.對文本分成若干長度小于5的字段.并計算每個字段的凝合度和信息熵.根據(jù)實驗得出的最佳閾值篩選得出新詞表.
步驟3.對文本進行分詞處理.一般分詞后要去除停用詞,但是詞向量的學習要依據(jù)上下文,停用詞也會詞其產生影響,因此在這一步先不去除停用詞.
步驟4.將分詞后的文件利用Word2Vec進行訓練,并不斷地調整參數(shù)以得到令人滿意的結果.訓練結束得到所有詞的詞向量.
步驟5.找出新詞表中與每個詞距離最近的前n個詞,通過這些詞的情感傾向分析新詞的情感傾向.
該方法流程圖如圖2所示.
圖2 新詞發(fā)現(xiàn)及情感傾向性分析方法流程圖
為了檢驗提出的方法,本文從新浪微博上抓取了1200萬條數(shù)據(jù),主要分析內容為每條微博的文本內容作為語料庫.
新詞發(fā)現(xiàn)步驟中,經過多次實驗,本文將新詞獲取的凝合度閾值設定為0.35,信息熵設定為0.5至1.5之間.添加的新詞舉例如表1所示.
表1 新詞發(fā)現(xiàn)舉例
通過對模型訓練時參數(shù)的調整,除詞向量維度外,其余參數(shù)選定包括,當前詞與預測詞在一個句子中的最大距離為3,使用CBOW算法.詞與詞之間的距離計算公式為兩向量的Cosine值:
程序輸入為以上舉例中的5個新詞,輸出為訓練模型中與每個詞相似度最大的4個詞,當調整模型詞向量空間維度為100時,輸出結果如表2所示.每個新詞對應4個距離最近的詞,對每個新詞分別列出了這4個詞以及他們之間的距離.
表2 情感傾向分析結果
從表2的結果可以看出,經過詞向量訓練的新詞可以從與其相近的詞中分析其情感傾向.例如抓狂表達的情感與淚、可憐、衰等都是相近的.同時,通過兩個詞之間不同的距離也可以看出近似關系的遠近.
為更具體表義社會新詞的情感含義及其傾向性,本文提出了一種基于詞向量的新詞情感傾向性分析方法.本文在分析了新詞發(fā)現(xiàn)方法和詞向量訓練工具Word2Vec的基礎上,研究了基于Word2Vec的新詞情感傾向性分析方法的可行性和架構設計,并面向微博語料進行實驗.從實驗結果可以看出該方法具有較好的可行性和可以信服的結果,但是在具體的新詞情感傾向性分類上沒有進行,因此還有很多待完善的細節(jié).
對情感詞的新詞發(fā)現(xiàn)和傾向性分析是為了更好理解用戶通過文本表達的情感,也是為中文分詞的未登錄詞挖掘提供了一種探索的方法.雖然該方向的研究仍存在諸多困難,但是在不斷深入創(chuàng)新的過程中必會取得令人滿意的效果.