曹德智,吳立成,趙悅*
1.中央民族大學(xué),中國少數(shù)民族語言文學(xué)院,北京 100081
2.中央民族大學(xué),信息工程學(xué)院,北京 100081
自動標(biāo)音技術(shù)即字音轉(zhuǎn)換技術(shù)(graphemeto-phoneme conversion, G2P),是指利用計算機(jī)自動為單詞系統(tǒng)標(biāo)注音標(biāo),將用字符拼寫的單詞文本轉(zhuǎn)換為可供人或機(jī)器閱讀和處理的單詞發(fā)音。G2P 算法可以應(yīng)用到自然語言處理的很多領(lǐng)域,如語音識別技術(shù)、語音合成技術(shù)、語音關(guān)鍵詞檢測、機(jī)器翻譯等應(yīng)用中。
在語音識別與語音合成系統(tǒng)中,發(fā)音詞典包含了從單詞到音素之間的一一對應(yīng)關(guān)系,在此基礎(chǔ)上把聲學(xué)模型和語言模型連接起來,共同組成一個用于進(jìn)行解碼工作的搜索狀態(tài)空間,其規(guī)模和質(zhì)量直接影響系統(tǒng)性能。隨著朝鮮語自身的發(fā)展,內(nèi)部不斷涌現(xiàn)大量的新詞和外來詞,但字典數(shù)據(jù)庫難以包括所有朝鮮語單詞的發(fā)音。因此,除了數(shù)據(jù)庫內(nèi)的詞匯,如何解決那些數(shù)據(jù)庫以外的“集外詞”即OOV(out of vocabulary)單詞的讀音就成了朝鮮語自然語言處理過程中不得不解決的問題。朝鮮語的字音轉(zhuǎn)換技術(shù)不僅可以為朝鮮語發(fā)音字典的構(gòu)建提供支持,并且能夠有效解決OOV單詞的自動注音問題。
字音轉(zhuǎn)換方法可分成兩類:
(1)基于知識驅(qū)動的方法。通過對朝鮮語的構(gòu)詞法和連續(xù)語流中的朝鮮語音節(jié)之間的音變現(xiàn)象進(jìn)行總結(jié),根據(jù)音變現(xiàn)象制定出朝鮮語的字音轉(zhuǎn)換規(guī)則系統(tǒng),然后實現(xiàn)字素到音素的轉(zhuǎn)換。Wang 等[1]在朝鮮語語音合成系統(tǒng)研發(fā)過程中對基于知識驅(qū)動的朝鮮語字音轉(zhuǎn)換算法進(jìn)行了研究,通過對朝鮮語語音的分析總結(jié)出了元音和輔音結(jié)合以及字間所產(chǎn)生的語音變異現(xiàn)象,根據(jù)他們發(fā)現(xiàn)的音變現(xiàn)象構(gòu)建了一個基于知識驅(qū)動的模型,將這些模型應(yīng)用于朝鮮語文本字符串,以預(yù)測發(fā)音的音位表示。但該模型最終并沒有建立可以應(yīng)用于朝鮮語語音處理的發(fā)音詞典,實驗過程中也沒有進(jìn)行嚴(yán)格的交叉測試。由于朝鮮語語音變異規(guī)則多樣,基于知識驅(qū)動的模型無法涵蓋所有語言事實,這些都會影響字音轉(zhuǎn)換的準(zhǔn)確率。
(2)基于數(shù)據(jù)驅(qū)動的方法。在豐富的訓(xùn)練數(shù)據(jù)支持下,利用概率統(tǒng)計和機(jī)器學(xué)習(xí)算法,建立發(fā)音模型,通過解碼算法為任意單詞進(jìn)行標(biāo)音。數(shù)據(jù)驅(qū)動的方法是目前主流的字音轉(zhuǎn)換方法。在國外,Park 等[2]基于雙向長短時常記憶算法(Bi- directional Long Short- Term Memory, Bi-LSTM)實現(xiàn)了漢語字素到音素的轉(zhuǎn)換,并在包含99,000 多個句子的漢語數(shù)據(jù)集上進(jìn)行了測試。Galescu 等[3]基于期望最大化(Expectation Maximization,EM)算法實現(xiàn)了英語字素音素一對一對齊,通過N-Gram 建立發(fā)音模型的字音轉(zhuǎn)換方法。Jiampojamarn 等[4]將隱馬爾科夫模型(Hidden Markov Model,HMM)應(yīng)用于發(fā)音建模提出了字素音素多對多的對齊方式。Hannemann等[5]提出了聯(lián)合序列模型的方法,并在英語、德語和法語測試集上進(jìn)行了測試,該方法也是當(dāng)時較為主流的字音轉(zhuǎn)換方法。Lim 等[6]通過LSTM(Long Short-Term Memory)算法實現(xiàn)了韓國語的字音轉(zhuǎn)換技術(shù),并與基于規(guī)則和基于統(tǒng)計的方法進(jìn)行了對比,最終識別率達(dá)到92.8%,實驗結(jié)果表明,基于數(shù)據(jù)驅(qū)動方法的結(jié)果優(yōu)于基于規(guī)則和基于統(tǒng)計的方法。在國內(nèi),王永生等[7]基于一種動態(tài)有限泛化法(Dynamic Finite Generalization,DFGA)的機(jī)器學(xué)習(xí)算法,用于英語字音轉(zhuǎn)換規(guī)則的學(xué)習(xí)。馮偉等[8]針對俄語語音合成和語音識別系統(tǒng)中發(fā)音詞典規(guī)模有限的問題,提出一種基于LSTM序列到序列模型的俄語詞匯標(biāo)音算法,實驗結(jié)果表明,該算法音素正確率達(dá)到了94.5%。馮偉等[9]將加權(quán)有限狀態(tài)轉(zhuǎn)化器(WFST)用于實現(xiàn)俄語字音轉(zhuǎn)換技術(shù),首先利用期望最大化算法以“多對多”的方式對俄語字音進(jìn)行對齊,然后將對齊結(jié)果通過聯(lián)合N-gram 模型訓(xùn)練,并轉(zhuǎn)化為WFST 發(fā)音模型,最后通過WFST 解碼算法對任意單詞的發(fā)音進(jìn)行預(yù)測。交叉驗證實驗結(jié)果表明,平均音素正確率為92.2%。李鵬等[10]基于CART 樹(Classification And Regression Tree)方法的構(gòu)建了一個英語字素到音素的轉(zhuǎn)換系統(tǒng)。趙坤等[11]提出了一種通過有條件維數(shù)擴(kuò)展(Conditional Mixincrementing algorithm,CMI)決策樹算法解決英語字音轉(zhuǎn)換的方法。王永生等[12]提出過一種基于決策樹的字素音素轉(zhuǎn)換的監(jiān)督學(xué)習(xí)算法,生成德語字素音素轉(zhuǎn)換規(guī)則,進(jìn)過10輪交叉測試,實現(xiàn)了德語字素到音素的轉(zhuǎn)換。
綜上所述,字音轉(zhuǎn)換技術(shù)在國內(nèi)外已有不少研究,但應(yīng)用對象主要為英語、俄語、德語,目前國內(nèi)還沒有任何朝鮮語字音轉(zhuǎn)換方面的研究和實驗,并且相關(guān)研究中均采用的是單一方法,或是僅基于知識驅(qū)動或是僅基于數(shù)據(jù)驅(qū)動?;谥R驅(qū)動的方法有比較完備的理論支撐,可解釋性強(qiáng)、執(zhí)行效率較高,但大規(guī)模復(fù)雜問題導(dǎo)致模型復(fù)雜計算困難,且難以使模型持續(xù)學(xué)習(xí)進(jìn)化?;跀?shù)據(jù)驅(qū)動的方法通用性強(qiáng),可支持模型持續(xù)學(xué)習(xí)進(jìn)化,但理論知識分析困難,依賴高質(zhì)量數(shù)據(jù)又難以合理確定輸入變量,且需要模型特征充足且選取精準(zhǔn)。因此,有必要以朝鮮語語音學(xué)知識為基礎(chǔ),融合數(shù)據(jù)驅(qū)動的方法,對朝鮮語字音轉(zhuǎn)換方法的實現(xiàn)與應(yīng)用做進(jìn)一步研究??紤]到朝鮮語的發(fā)音特點及音變規(guī)則,其字音轉(zhuǎn)換模型訓(xùn)練的過程與其他語言存在差異性,本文根據(jù)朝鮮語的發(fā)音規(guī)則以及字間的語音變異規(guī)律提取特征屬性送入預(yù)測模型中進(jìn)行訓(xùn)練。本研究建立了10,000 條朝鮮語字素和音素對照的平行語料庫,目的是在這個平行語料庫的基礎(chǔ)上,通過朝鮮語音變知識與數(shù)據(jù)驅(qū)動相融合的方法來解決朝鮮語自動注音問題。
朝鮮語是國內(nèi)外朝鮮民族的共同語,使用區(qū)域主要有中國東北三省的部分地區(qū)和朝鮮半島,既是中國的少數(shù)民族語言之一,同時也是朝鮮、韓國使用的通用語。朝鮮語文字屬于音型文字,其在組字的時候以音節(jié)為單位,即每一個朝鮮文字表示一個音節(jié)。每個朝鮮語音節(jié)至多由3 個音素構(gòu)成,按照發(fā)音順序,分別稱為首輔音、元音和尾輔音。朝鮮語文字按照“從左到右,自上而下”的基本規(guī)則進(jìn)行讀寫,如果以C代表輔音,V代表元音,則朝鮮語的音節(jié)結(jié)構(gòu)類型有CVC、VC、CV或V。圖1給出了一個朝鮮語文字的示例[13]。
圖1 朝鮮語文字示例Fig.1 Example of Korean characters
按書寫方式來分,在朝鮮語中共有首輔音19種、元音21 種、尾輔音27 種,本研究為每個位置可能出現(xiàn)的字母定義了對應(yīng)的拉丁轉(zhuǎn)寫映射,如表1所示。
表1 朝鮮語字母及其拉丁字母映射表Table 1 Korean letters and its Latin transcription mappings
朝鮮語有很多音變現(xiàn)象,其規(guī)則也相對較復(fù)雜,可分為連音現(xiàn)象、同化現(xiàn)象、送氣化現(xiàn)象、緊音化現(xiàn)象、腭化現(xiàn)象、添加現(xiàn)象以及脫落現(xiàn)象。具體規(guī)則解釋及相關(guān)實例如表2所示。
表2 連續(xù)音節(jié)中朝鮮語音變現(xiàn)象規(guī)則表Table 2 Rules of Korean phonetic varition
朝鮮語中的字母與音素之間并不是一一對應(yīng)的,同一個字素可以對應(yīng)多個音素。同樣地,同一個音素可能和不同的字母相對應(yīng),尤其是其中的一些輔音的變音規(guī)則就更為復(fù)雜,即有一對一、一對多、多對一等情況。比如字素“?”,在不同的音變條件下可以與音素/d/、/t/、/j/、/dd/對應(yīng);再如音素/kh/,在不同情況下可以與字素“?”“?”“?”對應(yīng)。這顯然給單詞與其讀音之間的轉(zhuǎn)換帶來了困難。表3 為朝鮮語單詞“????”的字素音素對應(yīng)情況。
表3 “????”字素與音素的對應(yīng)情況Table 3 Correspondence between “????” grapheme and phoneme
針對單詞中某個需要進(jìn)行轉(zhuǎn)換的字素,本文提取了5 個特征來組成一個示例,如表4 所示。實例用“特征-值”表示,以單詞“???”為例,針對單詞中每個字素所提取的特征如表5所示。
表4 特征定義Table 4 Feature Definition
表5 單詞“???”各字素特征表示Table 5 Characterization of the word"???"by grapheme
表5 字母“G”代表字素,“P”代表音素,“V”表示元音,“C”表示輔音。當(dāng)目標(biāo)字素為首字素或尾字素,前后沒有其他字素時則為空,用“E”表示。表6中的字素“?”與音素是一對多關(guān)系,其4 個音素分別是/n/、/n2/、/l/、/l2/,表5 選取了字素“?”10個比較典型的實例。
表6 字素“?”的實例Table 6 Example of the character"?"
數(shù)據(jù)驅(qū)動方法中決策樹算法容易理解,機(jī)理可解釋性強(qiáng),得到的模型很容易可視化,非專家也很容易理解。相比于其他算法,決策樹算法計算量相對較小,且容易融入知識規(guī)則,可以處理連續(xù)字段。其他的技術(shù)往往要求先把數(shù)據(jù)一般化,比如去掉多余的或者空白的屬性,而決策樹算法不需要對數(shù)據(jù)進(jìn)行復(fù)雜的預(yù)處理,比如歸一化或標(biāo)準(zhǔn)化,并能夠在相對短的時間內(nèi)對大量數(shù)據(jù)做出可行且效果良好的處理。
CART決策樹算法采用基尼指數(shù)來代替信息增益比選擇最優(yōu)特征?;嵯禂?shù)代表了模型的不純度,基尼指數(shù)越小,純度越高,該特征越好[14]。
假設(shè)有k個類別,第k個類別的概率為pk,概率分布的基尼系數(shù)表達(dá)式如公式(1)。
如果是二分類問題,一個樣本屬于其中一類的概率為p,概率分布的基尼系數(shù)表達(dá)式如公式(2)。
如果是多分類問題,對于樣本集D,樣本個數(shù)為|D|,假設(shè)有K個類別,第K個類別的數(shù)量為|Ck|,則樣本集D的基尼系數(shù)表達(dá)式如公式(3)。
根據(jù)特征A的某個值a,把D分成|D1|和|D2|,則在特征A條件下,樣本D的基尼指數(shù)表達(dá)式如公式(4)。
基尼系數(shù)Gini(D)表示集合D的不確定性,基尼指數(shù)Gini(D,A)表示經(jīng)A=a分割后集合D的不確定性。因此基尼指數(shù)值越大,樣本集合的不確定性也就越大,即基尼指數(shù)小的特征具有更強(qiáng)的分類能力。
以表5為例,計算各特征的基尼指數(shù),選擇最優(yōu)特征及其最優(yōu)切分點,假設(shè)從表5內(nèi)特征Q_-1中取特征值E,將樣本集D分成“是E”=|D1|和“非E”=|D2|,求特征Q_-1在類別P_-1下(“是E”和“非E”)的Gini值:
此時Gini(D,Q-1,‘E’)=0 值為0,即沒有雜質(zhì),該特征具有更強(qiáng)的分類能力。
在構(gòu)建決策樹的初始階段,計算所有特征的基尼指數(shù),選取基尼指數(shù)最小的特征作為根結(jié)點。根據(jù)根結(jié)點的最優(yōu)切分點分成兩個叉和與之相對應(yīng)的數(shù)據(jù)集,然后再沿著最左側(cè)的分枝繼續(xù)計算其他特征的基尼指數(shù),再選取一個最佳的特征作為該分叉的結(jié)點,以此類推,當(dāng)這一條分枝結(jié)點全部計算完成或者無法繼續(xù)生長,則回到上一個未完成的分叉繼續(xù)樹的生長,直到所有分叉均完成結(jié)點計算或者樹無法繼續(xù)向下生長為止。具體步驟如下:
輸入:訓(xùn)練數(shù)據(jù)集D,停止計算的參數(shù)條件。
輸出:CART決策樹
根據(jù)訓(xùn)練數(shù)據(jù)集,從根結(jié)點開始,遞歸地對每個結(jié)點進(jìn)行以下操作,構(gòu)建二叉決策樹:
(1)設(shè)結(jié)點的訓(xùn)練數(shù)據(jù)集D,計算現(xiàn)有特征對該數(shù)據(jù)集的基尼指數(shù)。此時,對每一個特征A,對其可能取得的每個值a,根據(jù)樣本集對A=a的測試為“是”或“否”將D分割成|D1|和|D2|兩部分,利用公式(5)計算A=a時的基尼指數(shù)。
(2)在所有可能的特征A以及它們所有可能的切分點a中,選擇基尼指數(shù)最小的特征以及其對應(yīng)的切分點作為最優(yōu)特征與最優(yōu)切分點。依最優(yōu)特征與最優(yōu)切分點,從該結(jié)點生成兩個子結(jié)點,將訓(xùn)練數(shù)據(jù)集依特征分配到兩個子結(jié)點中去。
(3)對兩個子結(jié)點遞歸地調(diào)用(1)、(2),直至滿足停止條件。
(4)生成CART決策樹。
算法停止計算的條件是結(jié)點中的樣本個數(shù)小于預(yù)定閾值,或樣本集的基尼指數(shù)小于預(yù)定閾值(樣本基本屬于同一類),或者沒有更多特征[15]。
當(dāng)然在實際的決策樹構(gòu)建的過程中,不可能像表5 那么簡單,這里只是為了方便算法說明,特意選取了幾個實例。
2.3.1 數(shù)據(jù)集
本文選用了韓國開源的Zeroth[16]數(shù)據(jù)集,該網(wǎng)站內(nèi)語料庫包含基于語素的分詞以及預(yù)先標(biāo)注好的詞條。進(jìn)一步對詞條進(jìn)行篩選,刪除韓國本土詞、外語音譯詞,根據(jù)《中國朝鮮語規(guī)范原則與規(guī)范細(xì)則研究》(金永壽著,2012 年,人民出版社)選取中國朝鮮語使用的基礎(chǔ)詞匯。
2.3.2 規(guī)則測試
本文采用K折交叉驗證法,即將數(shù)據(jù)集分為K份,K-1份的訓(xùn)練數(shù)據(jù)集用于構(gòu)建模型,確定模型最優(yōu)超參值,然后基于這個確定的超參值再基于1 份測試數(shù)據(jù)集驗證模型性能。經(jīng)驗表明,K的最佳取值為10,因為在這種情況下,10折交叉驗證可以讓偏差與方差取得最好的平衡。所以本文將預(yù)先創(chuàng)建的字素音素平行語料庫中的10,000 個樣本數(shù)據(jù)平均分成10 份,每份1,000 個樣本,經(jīng)過10 折交叉測試,將9 份樣本數(shù)據(jù)用于訓(xùn)練規(guī)則,1 份樣本數(shù)據(jù)用于規(guī)則測試。過程如圖2所示。
圖2 10折交叉驗證流程圖Fig.2 10-fold cross-validation flow char
結(jié)果顯示平均字素音素轉(zhuǎn)換正確率只有82.52%,并不理想(表7)。為了進(jìn)一步提高正確率本研究對單詞數(shù)據(jù)進(jìn)行了預(yù)處理。
表7 字素音素轉(zhuǎn)換規(guī)則10輪交叉驗證結(jié)果Table 7 Results of 10 rounds of cross-validation of grapheme-phoneme conversion rules
在朝鮮語中不是所有字素都是發(fā)音字素,也存在字素不發(fā)音的情況,例如字素“?”,當(dāng)字素“?”位于首輔音位置的時候不發(fā)音,所以單詞“??”按照讀音標(biāo)注音素應(yīng)是“o i”,這就出現(xiàn)了4個字素對應(yīng)2個音素的情況。
字素“?”也是如此,當(dāng)字素“?”位于尾輔音的位置時同樣不發(fā)音,這就導(dǎo)致了數(shù)據(jù)內(nèi)大量音素字素不對齊的情況,進(jìn)而影響了模型的訓(xùn)練。于是本文對單詞進(jìn)行詞法預(yù)處理,將所有不發(fā)音的情況用一個音素“sp”代替,這樣每個字素都能對應(yīng)實際發(fā)音的音素,保證了數(shù)據(jù)間的對齊。
由此經(jīng)過新生成的規(guī)則庫再次進(jìn)行10輪交叉測試結(jié)果,如表8 所示,平均轉(zhuǎn)換正確率提高到94.63%。
表8 處理后10輪交叉測試結(jié)果Table 8 Results of 10 rounds of cross-testing after processing
此前,韓國學(xué)者Lim 等[6]通過LSTM 算法實現(xiàn)了基于數(shù)據(jù)驅(qū)動的韓國語的字音轉(zhuǎn)換技術(shù),最終識別率達(dá)到92.8%。為了進(jìn)一步驗證決策樹模型的性能,本研究也采用了基于長短時記憶網(wǎng)絡(luò)的編碼器-解碼器(Encoder-Decoder+LSTM)模型結(jié)構(gòu)來進(jìn)行對比實驗。實驗結(jié)果如圖3所示。
圖3 Encoder-Decoder+LSTM實驗結(jié)果圖Fig.3 Encoder-Decoder+LSTM experimental result graph
從圖3 的實驗結(jié)果顯示,當(dāng)模型batch_size值為5,單元數(shù)為256,Epoch 值為7 時Encoder-Decoder+LSTM 模型學(xué)習(xí)效果最好,朝鮮語音素識別準(zhǔn)確率到達(dá)90.46%。
Lim 等[6]用的單純數(shù)據(jù)驅(qū)動的方法,而本文方法除了采用數(shù)據(jù)驅(qū)動的方法以外,還結(jié)合了朝鮮語音學(xué)音變規(guī)則創(chuàng)造性地為每個數(shù)據(jù)定義屬性特征用于訓(xùn)練CART 決策樹模型。本文方法的實驗結(jié)果優(yōu)于對比模型的實驗結(jié)果,從表9實驗對比結(jié)果顯示,在數(shù)據(jù)量相仿的情況下,本文方法可以提高朝鮮語字音轉(zhuǎn)換技術(shù)的準(zhǔn)確率。
表9 實驗對比結(jié)果Table 9 Experimental comparison results
由于朝鮮語構(gòu)詞功能十分強(qiáng)大,新詞不斷涌現(xiàn),因此不可能建立一個包含所有詞匯的數(shù)據(jù)庫。本研究將知識驅(qū)動與數(shù)據(jù)驅(qū)動兩大類方法相結(jié)合,利用其各自優(yōu)勢,形成了知識與數(shù)據(jù)協(xié)同驅(qū)動的新方法路徑,使自動標(biāo)音結(jié)果能夠反映朝鮮語連續(xù)語流中音節(jié)弱化、脫落、增音、異化等音變現(xiàn)象,并能夠準(zhǔn)確地獲得字素相對應(yīng)的音素,實現(xiàn)了朝鮮語字音在音變條件下的一一對齊,在交叉驗證中平均字音轉(zhuǎn)換的正確率達(dá)到了94.63%。利用本文提出的朝鮮語自動標(biāo)音方法能夠有效建立準(zhǔn)確的朝鮮語發(fā)音字典,有望為朝鮮語語音識別與語音合成等系統(tǒng)提供技術(shù)支持。基于本文方法可以擴(kuò)展到不同的語言場景下,例如:維吾爾語、蒙古語、日語等其他與朝鮮語同屬黏語系的語言之中。通過總結(jié)音變規(guī)則,提取屬性特征,再結(jié)合數(shù)據(jù)驅(qū)動方法實現(xiàn)該語言的自動標(biāo)音技術(shù),提高該語言字音轉(zhuǎn)換技術(shù)的魯棒性。
在下一步工作中將探索用于解決自動標(biāo)音的其他方法,例如:將考慮如何基于無監(jiān)督或者半監(jiān)督的機(jī)器學(xué)習(xí)方法充分利用網(wǎng)絡(luò)空間的朝鮮語資料提高朝鮮語字音轉(zhuǎn)換技術(shù)的準(zhǔn)確率,將作為本文的后續(xù)工作繼續(xù)開展研究,并與本文的實驗進(jìn)行比對,為進(jìn)一步提升朝鮮語字音轉(zhuǎn)換的正確率尋找新途徑。
利益沖突聲明
所有作者聲明不存在利益沖突關(guān)系。