李瀚臣,張順香*,朱廣麗,王騰科
(1.安徽理工大學 計算機科學與工程學院,安徽 淮南 232001;2.合肥綜合性國家科學中心 人工智能研究院,合肥 230088)
新詞識別,即識別通用詞典中的未收錄詞,通過上下文信息、詞構造特點等構造規則或模型以達到識別新詞的目的,可用于發現網絡新詞、專有名詞、舊詞新用等。在微博等社交網站,主要用戶為年輕群體,這些用戶群體擁有創新性的見解與表達能力,產生了一系列的網絡新詞。然而,新詞的產生速度快、語法語用靈活,諸如諧音梗中使用同音近音漢字、英文或數字組合代替原本舊詞,這些詞的創造難度低,沒有固定的組合規則,組成方式多樣,易于產生與傳播,導致使用現有的基于規則和統計的新詞識別方法發現諧音新詞的準確率不高、難以解釋諧音新詞的含義等問題。準確識別文本中的諧音新詞,及時發現這些詞并擴充至中文詞典,有助于理解評論者的真實意見,方便有關部門對輿論及時管控,生產者可根據用戶的真正反饋來更新產品,完善營銷策略。
為了構建一個發現諧音詞的新詞識別方法,需考慮以下幾點:1)如何將候選新詞轉換成發音相近的漢語拼音來與舊詞拼音比較。2)如何判斷并找出和諧音詞最相近的舊詞,根據判別結果判斷候選新詞是否為諧音新詞。
基于以上考慮,本文提出一種中文諧音新詞發現方法,引入新舊詞拼音比較,通過拼音相似度判斷候選詞是否為諧音新詞,以提高諧音新詞識別的準確率。中文諧音新詞發現方法的框架如圖1 所示。首先,對微博評論文本進行預處理,進行編碼格式的統一、特殊與重復字符串的過濾;然后,基于內部與外部的統計,使用互信息計算預選新詞內部結合度,結合鄰接熵確定候選新詞邊界;接著,將新詞轉換成發音相近的漢語拼音,與中文詞典中的舊詞拼音比較,找出發音最相似的對比結果;最后,根據最相似結果是否超過閾值判斷候選詞是否為諧音新詞,并找出諧音新詞對應的原有詞。本文的主要工作包括:

圖1 本文方法框架Fig.1 Framework of the proposed method
1)提出一種改進的候選新詞統計方法,用于發現新詞。該方法通過綜合左右鄰接熵的值來計算候選新詞鄰接字符的不確定性,根據候選新詞內外部統計的綜合得分發現新詞。
2)提出一種基于拼音相似度的諧音新詞發現方法,用于提高諧音新詞識別的準確率。該方法通過新詞拼音與舊詞拼音的比較,從最相似的比較結果中發現諧音新詞。
早期多采用基于規則的方法,通過總結新詞的構詞特點來建立人工規則,利用構詞模式、詞性規則、成詞概率等識別未登錄詞。鄭家恒等[1]根據漢語構詞法建立規則語料庫,構建詞綴表過濾不同類型模式的垃圾串;崔世起等[2]采用自學習的方法建立垃圾詞典和詞綴詞典對候選新詞進行過濾。基于規則的方法具有較高的新詞識別精度,但規則通常只適用于特定領域,導致該類方法可移植性較差,且建立人工規則的工作量大、成本高。目前新詞識別方法主要分為基于統計的方法、基于規則與統計相結合的方法和基于深度學習的方法。
在微博評論文本的新詞識別方面,Yang 等[3]采用改進互信息篩選出大于2 字組成的候選新詞,再利用鄰接熵確定新詞。在產品評論方面,Zhu 等[4]通過互信息與改進鄰接熵從產品評論中發現潛在詞集,從而有效判斷用戶的隱私偏好;王煜等[5]使用改進頻繁樹算法篩選出候選新詞,引入時間逐點互信息判定候選新詞內部結合度和時間性,加入時間特征提高熱點新詞識別率;Kim 等[6]對谷歌與蘋果使用的本地化差分隱私(Local Differential Privacy,LDP)進行改進,從而解決一詞多個LDP report 導致的計算成本與隱私預算問題;Wu等[7]利用在線資源構建俚語情感詞典,有助于俚語情感新詞的識別與情感分析的任務;Qian 等[8]則針對傳統分詞技術難以切分保留新詞的問題,提出一種基于詞嵌入的方法,結合詞嵌入和頻繁N-gram 串完成新詞發現;Shang[9]將相似度和互信息組合為相似度增強互信息,提出了一種基于相似度判斷的新詞發現算法。針對諧音新詞的識別,目前有Chung等[10]采用混合數字與符號的中文諧音新詞發現方法BNShCNs(Blended Numeric and symbolic homophony Chinese Neologisms),針對臺灣批踢踢(PTT)在線社區文本發現數字諧音詞,采用無監督方法獲得候選新詞。
趙志濱等[11]通過構建領域句法詞典,結合詞向量技術實現了領域新詞發現。張爽等[12]基于卷積神經網絡(Convolutional Neural Network,CNN)模型,提出了一種依存句法與語義信息結合的相似性計算模型(similarity computing model based on Dependency Syntax and Semantics,DSSCNN),融合相似度判斷以更有效地發現新詞。針對社交媒體內容中的新詞,Zalmout 等[13]提出了一種無監督的方法來檢測Reddit 評論數據中的新詞,而且并不依賴于并行訓練數據。Li 等[14]針對相鄰兩字的凝固度導致錯誤分詞的情況,提出了一種基于N-gram 模型和多特征頻率的新詞發現算法。在新情感詞提取方面,Zhang 等[15]提出了一種基于序列標注和句法分析的數據處理方法,從產品評論中獲取新情感詞的候選集。在英文新詞識別方面,Ryskina 等[16]從語義分布、語義稀疏性的內部因素和技術文化變化的外部因素綜合考慮英文新詞識別。
針對金融市場的分析,Yan 等[17]提出了SD-SPP(Source Diversity-Significance of Principal Patterns),使用動態特征描述上下文模式相似性進行新詞識別。針對twitter 等社交媒體中的新詞,Sarna 等[18]提出一種從社交媒體信息中提取關鍵詞的新方法,根據現有的字典和概率找到每個域的新單詞。而McCrae[19]針對形容詞-名詞形式的新詞,采用預訓練的語言模型進行識別,并與單個嵌入詞進行比較。Liang等[20]提出了邊緣似然法和獨立領域的中文新詞檢測,有效提高了中文新詞邊界和域外數據發現新詞的準確率。Wang[21]將未標記數據與統計方法結合,并將標記數據與隱馬爾可夫模型相結合來增強新詞識別效果。
基于以上研究分析,現有方法雖然可以有效識別中文新詞,但仍有不足之處。現有中文新詞識別方法很少考慮諧音新詞,在分詞階段采用針對新詞識別的分詞方法將諧音新詞切分成多個舊詞,導致諧音新詞的識別率不高。本文將候選新詞與中文詞典中的詞轉換成拼音,進行相似度比較,判斷比較結果中與舊詞相似度最大的候選詞是否為諧音新詞,從而提高諧音新詞識別準確率。
微博面向年輕用戶群體,里面的評論文本具有創新性、靈活性,評論新詞涉及領域廣、構詞模式自由,微博評論文本分詞效果直接影響預選新詞的獲取效果,進而影響后續新詞識別的準確率。本文預選新詞獲取的流程如圖2 所示。

圖2 微博評論文本預選新詞的獲取Fig.2 Candidate new word acquisition from Weibo comment text
微博評論文本中含有大量表情符號、特殊字符串等不利于分詞的無用信息,需要經過預處理。
1)將文本字符轉換為UTF-8 編碼。
2)過濾掉微博文本中網址鏈接、@用戶名等特殊字符串。
3)過濾掉微博文本中重復聚集字符串,如“!!!”“???”“……”等。
4)查找文本中連續的數字和英文字母,并將它們作為單字,防止一個詞中英文字母和數字的數量超過最大詞窗口導致分詞錯誤的問題。
5)采用N-gram 模型對文本進行切分,考慮到目前諧音詞多是4 字以內的組成形式,本文的N-gram 最大詞窗口取4,以減少4 字諧音詞未被正確切分的情況。
6)對于切分后得到的詞,用詞典過濾掉已有的詞。
對預處理后的文本采用互信息和改進鄰接熵進行候選新詞篩選。互信息表示兩個對象間相互依賴的程度,可表示字與字、字與詞之間的相關性,相關性越大,字與字、字與詞的成詞概率越大,依賴程度越高。本文采用平均互信息(Average Mutual Information,AMI)來表示字或詞x、y之間的相關性,如式(1)所示:
其中:n表示x,y組成的候選詞的長度;p(x)、p(y)表示字或詞x、y單獨出現在文本中的概率;p(x,y)表示x與y同時出現在文本中的概率;AMI(x,y) 表示x與y的相關聯程度。當AMI(x,y)>0 時,表示x與y相互關聯,AMI(x,y)越大,兩者關聯程度越高,越有可能成為新詞。
使用左右鄰接熵來確定新詞左右邊界。鄰接熵可以衡量候選新詞的左右鄰接字符的不確定性,不確定性越大,說明左右鄰接字符包含的信息越多,成詞的概率越高。左、右鄰接熵分別如式(2)、(3)所示。
其中:N(wi,w)表示wi與w同時出現的次數;N(wj,w)表示wj與w同時出現的次數;N(w)表示w出現的次數。
考慮因式(2)或式(3)值過大或過小,導致候選新詞鄰接熵偏大的情況,假如新詞的左鄰接熵遠低于右鄰接熵,而作求和運算得到的鄰接熵值會偏大,容易將它劃分為新詞。為減少此類情況出現,本文采用一種改進的鄰接熵來表示左右鄰字的豐富程度,綜合左右鄰接熵來計算候選新詞鄰接字符的不確定性,如式(6)所示。考慮到HL(w)與HR(w)可能相等,本文改進鄰接熵中的分母,采用來避免分母為0 的情況。
得到平均互信息與鄰接熵兩個評估指標后,對候選新詞進行打分,當分數超過閾值時,將它視為新詞。候選新詞的總體得分計算式如式(7)所示。
其中:α表示平均互信息的權重;β表示鄰接熵的權重。
諧音詞具有與原有詞相同的含義,組成形式靈活多樣,較為常見的有中文諧音字詞、英文單詞或數字替換原字詞組成新詞。為了提高諧音新詞識別的準確率,便于含有諧音詞的評論文本的情感分析,本文將候選諧音新詞轉化成漢語拼音,與中文詞典舊詞的漢語拼音比較,從候選諧音新詞中找出候選諧音新詞。對于含有數字的諧音新詞,如484(是不是)、521(我愛你)、886(拜拜咯),每個數字都對應一個原有字從而構成諧音詞,因此對于1~9 的數字本文同樣采用將其轉換成漢語拼音的方式。
針對含有英文單詞的諧音新詞,考慮到諧音詞組成的靈活性與易傳播性,通常不會采用復雜生僻的英文單詞作為諧音詞,因此本文準備了包含3 000 個常用單詞的英文詞典,并保留單詞長度在3~5 的常用英文單詞,約1 200 個,如表1 所示。如候選諧音新詞“duck 不必”,將英文單詞duck 對應的音標[d?k]轉換成漢語拼音[da-ke],通過計算新詞拼音[da-ke-bu-bi]和舊詞拼音之間的編輯距離與相似度,找到滿足條件的舊詞拼音[da-ke-bu-bi],對應舊詞“大可不必”,則該詞“duck 不必”為諧音新詞,其對應的是中文詞典中的原有詞“大可不必”。首先,調用函數庫將候選諧音新詞與英文詞典中的單詞轉換成拼音;其次,計算候選諧音新詞拼音與中文詞典原有詞拼音的編輯距離;最后,將兩種拼音進行相似度比較,找出相似度最高的比較結果,并對找出的諧音新詞標注其對應的原有詞。

表1 英文詞典例子Tab.1 Examples of English dictionary
算法1 諧音新詞識別的算法。
輸入 候選諧音新詞w1,中文詞典chinese.xlsx,英文詞典english.xlsx;
輸出 諧音新詞與它對應的舊詞。
本文引入一種新的諧音新詞識別的方法,以識別包含英文單詞和數字的諧音新詞。在將候選諧音新詞與中文詞典舊詞轉換成拼音s1與s2后,需要計算兩個字符串之間的距離。由于是針對諧音新詞的識別,不僅要考慮拼音字符串中各個字符出現的次數,還需要考慮拼音字符串中各個字符的位置順序,因此本文采用兩種拼音字符串之間的編輯距離Dis(s1,s2),如式(8)所示。總體思路如下:
1)s1的第i個字符與s2的第j個字符相同時,即無需對s1的第i個字符進行操作就能和s2的第j個字符一致,則edit(i,j)=edit(i-1,j-1),即與s1的前i-1 個字符到s2的前j-1 個字符需要操作的次數一致。
2)s1的第i個字符與s2的第j個字符不同時,需考慮以下三種操作:
①刪除操作。edit(i,j)=edit(i-1,j)+1 表 示s1的 前i-1 個字符已經轉換為s2的前j個字符,則在s1的第i個字符位置只需進行一步刪除操作。
②插入操作。edit(i,j)=edit(i,j-1)+1 表 示s1的 前i個字符已經轉換為s2的前j-1 個字符,則在s1的第i個字符位置只需進行一步插入操作,插入一個與s2的第j個字符相同的字符。
③替換操作。edit(i,j)=edit(i-1,j-1)+1 表示s1的前i-1 個字符已經轉換為s2的前j-1 個字符,則在s1的第i個字符位置只需進行一步替換操作,替換一個與s2的第j個字符相同的字符。
對于s1與s2其中一個的字符串長度為0 時,它們的編輯距離為另一個的字符串長度大小。由于本文考慮的是候選諧音新詞字符串與中文詞典舊詞字符串的編輯距離計算,理論上不存在其中一個長度為0 的情況。
其中:i表示候選諧音新詞拼音字符串s1的下標,從1 開始;j表示中文詞典舊詞拼音字符串s2的下標,從1 開始表示當前候選諧音新詞拼音字符串s1的下標為i對應的字符表示當前中文詞典舊詞拼音字符串s2的下標為j對應的字符;edit(i,j)與Disi,j(s1,s2)表示長度為i的當前候選諧音新詞的拼音字符串s1和長度為j的當前中文詞典舊詞拼音字符串s2之間的編輯距離。
算法2 候選諧音新詞拼音與舊詞拼音編輯距離的算法。
輸入 候選諧音新詞w1,詞典舊詞w2;
輸出 候選諧音新詞拼音字符串s1與其對應的舊詞拼音字符串s2的編輯距離Dis(s1,s2)。
經過3.1 節候選諧音新詞與中文詞典舊詞的拼音轉換后,計算出當前候選諧音新詞拼音與各個中文詞典舊詞拼音的編輯距離Dis(s1,s2),然后通過本節計算候選新詞拼音與中文詞典舊詞拼音之間的相似度Sim(s1,s2),如式(9)所示:
其中:n1為候選新詞拼音字符串s1的長度;n2為中文詞典舊詞拼音字符串s2的長度。s1與s2之間的編輯距離Dis(s1,s2)越小,s1與s2之間越相似,它們的相似度Sim(s1,s2)越大。
本文保留相似度Sim(s1,s2)最大時對應的候選新詞,并與閾值進行比較,若超過閾值,則將該候選諧音新詞判定為諧音新詞。當多個候選新詞找到對應的舊詞,且這些候選新詞在文本中相鄰出現,則將這些候選新詞合并,并認為由這些候選新詞共同組成一個候選諧音新詞。考慮到諧音詞讀音與原詞讀音多為同音或近音,本文優先考慮同音詞與近音詞作為候選諧音新詞。
本文的實驗環境如下:采用Windows 10 版本,64 位操作系統,CPU 為12 代i5 12400F,GPU 為NVIDIA GeForce RTX 3060 12 GB,16 GB 內存,數據讀取采用MySQL,編程語言為Python3.7。選取的數據集如下:
數據集1 本文爬取的當下微博熱門話題的評論數據集,包含類別、話題、內容、評論、情感極性等微博語料,選取其中10 000 條評論文本數據。
數據集2 北理工NLPIR 大數據搜索挖掘實驗室的微博評論數據集,包含500 萬條微博語料,隨機抽取其中10 000條評論文本數據。
表2 列舉了兩個數據集中的部分內容。

表2 實驗數據舉例Tab.2 Examples of experimental data
實驗采用準確率P(Precision)、召回率R(Recall)和F1 分數F作為評價指標,如式(10)~(12)所示。
其中:N為實驗獲得的諧音新詞總個數;M為微博語料中存在的諧音新詞總個數。
本文的具體實驗操作如下。
步驟1 數據預處理。過濾掉數據集中重復和特殊的字符串,對文本進行分字與分詞處理,得到分詞后的數據。
步驟2 基于統計的新詞識別。數據經預處理后,計算詞的互信息得到候選新詞,改進鄰接熵確立新詞邊界,得到新詞。
步驟3 諧音新詞識別。將所有新詞與中文詞典中的詞轉換成拼音,采用編輯距離找出相似度最大的新詞與詞典中的詞,若相似度超過閾值,則將新詞判定為諧音新詞。
為了驗證本文諧音新詞發現方法的有效性,設置對比實驗,對比方法如下:
1)BNShCNs[10]:利用無監督方法獲取候選新詞,通過詞嵌入向量篩選出數字諧音新詞。
2)DSSCNN[12]:基于字粒度根據統計量獲取候選新詞,并通過新詞與歷史表達的句法結構與上下文語義計算語句相似度來獲取新詞。
為了驗證改進的外部統計篩選新詞以及拼音相似度比較對整體諧音新詞發現方法效果起作用,分別改變這兩個部分的方法,其他部分保持不變。設置消融實驗進行對比。
1)改進內外部統計(方法1):不進行新詞與詞典舊詞的拼音相似度比較,對微博評論文本預處理后,結合平均互信息與改進鄰接熵的綜合得分來獲取諧音新詞。
2)內外部統計+拼音相似度比較(方法2):在預選新詞的外部統計階段,對左右鄰接熵求和來判斷其值是否超過閾值來劃分該詞是否為新詞,再采用新詞與詞典舊詞的拼音相似度比較方法獲取諧音新詞。
根據4.2 節的實驗方法,本文進行如下實驗。
1)在數據集1 上,不同方法獲取諧音新詞的實驗結果如表3 所示。本文方法在數據集1 上的F1、準確率、召回率比BNShCNs 提高了1.75、0.51 和2.91 個百分點。BNShCNs 能更好地識別數字諧音新詞,而數據集1 還含有中英文諧音新詞,導致該方法對諧音新詞識別的總體效果下降。相較于DSSCNN,本文方法的F1、準確率、召回率提高了5.81、5.27與6.31 個百分點。

表3 不同方法在數據集1、2上的實驗結果對比 單位:%Tab.3 Comparison of experimental results of different methods on dataset 1 and 2 unit:%
2)在數據集2 上,不同方法獲取諧音新詞的實驗結果如表3 所示。本文方法的召回率比BNShCNs 高0.26 個百分點,但準確率和F1 降低了1.62 和0.66 個百分點。可能是本文方法在數據集2 上獲得的諧音新詞較多,但與數據集上相符的諧音新詞較少,導致和BNShCNs 相比在準確率和F1 上有所下降。相較于DSSCNN,本文方法的準確率、召回率和F1 提高了4.24、5.77 和5.02 個百分點。
本文方法在兩個數據集上的結果均高于DSSCNN 方法,這可能是DSSCNN 方法雖然能有效識別新詞,但沒有針對諧音新詞的識別,導致該方法在本實驗結果中的諧音新詞識別效果不好。各方法在數據集2 上的實驗結果普遍較低,這可能是該數據集非針對包含諧音新詞的評論文本收集,導致各方法在本實驗結果的諧音新詞識別效果整體有所下降。
3)消融實驗的結果如表4 所示。本文方法在數據集1 上的F1、準確率、召回率比方法1 高出了12.60、12.08 和13.09個百分點。因為方法1 缺少對諧音新詞的篩選,將所有識別出的新詞作為諧音新詞的識別結果,導致諧音新詞識別的準確率不高。相較于方法2,本文方法的F1、準確率、召回率提高了10.18、10.12 和10.23 個百分點。這是由于部分候選新詞的左鄰接熵或右鄰接熵過小,但左右鄰接熵之和大于閾值,被錯誤篩選成新詞,影響了諧音新詞識別結果。

表4 中文諧音新詞發現方法的消融實驗結果 單位:%Tab.4 Ablation experimental results of Chinese new homophonic word discovery method unit:%
從表3~4 可以看出:融入拼音相似度比較的諧音新詞識別方法在準確率、召回率和F1 上均有一定提升;使用改進的外部統計方法識別新詞在一定程度上提高了諧音新詞識別的效果。諧音新詞識別的準確率得到提升的重要原因是本文方法考慮了平均互信息與改進鄰接熵的綜合得分來獲取新詞,并利用拼音相似度對諧音詞拼音與舊詞拼音比較,找出與舊詞發音最相似的諧音新詞,有利于諧音新詞的識別。
為了豐富諧音新詞的語義信息,提高諧音新詞識別的準確率,本文提出一種諧音新詞發現方法。通過對分詞后的文本計算平均互信息得到候選新詞,利用改進鄰接熵篩選出新詞,并將拼音的相似度比較應用于諧音新詞識別方法,提高了諧音新詞識別的準確率。
實驗結果表明,在微博評論文本的諧音新詞識別方面,使用中文拼音進行相似度比較能提高諧音新詞的識別效果。未來將基于本文方法,結合深度學習Bi-LSTM-CRF(Bidirectional Long Short-Term Memory Conditional Random Field)利用上下文信息識別低頻新詞,從而對諧音新詞的識別效果進一步改進,推進中文新詞識別等研究。