杜 航 牟 莉
(西安工程大學(xué)計算機(jī)科學(xué)學(xué)院 西安 710600)
隨著我國社會的不斷發(fā)展,稅法的地位與日俱增,稅務(wù)機(jī)關(guān)作為國家職能部門之一,普及稅收法律法規(guī)及相關(guān)政策更是任重道遠(yuǎn)。因此,如何幫助納稅人快速便捷地了解稅務(wù)知識,對稅務(wù)機(jī)關(guān)來說尤為重要[1]。早在2010年,國家稅務(wù)總局就開通了全國統(tǒng)一的12366 納稅服務(wù)熱線,由稅務(wù)工作人員電話解答納稅咨詢問題,并逐步開始建立稅收業(yè)務(wù)知識庫[2]。隨后國家稅務(wù)總局加快了發(fā)展稅務(wù)信息化的腳步,于2017 年上線了12366 納稅服務(wù)平臺,稅收業(yè)務(wù)知識庫收錄的稅收政策及答復(fù)口徑從最初的幾百條已逐步擴(kuò)展到了幾萬條。以往,納稅人主要通過現(xiàn)場咨詢或電話咨詢解決與納稅相關(guān)的問題,后來也出現(xiàn)了網(wǎng)絡(luò)留言等更加簡單便捷的咨詢方式。但隨著目前納稅人咨詢數(shù)量的快速增長及稅務(wù)咨詢問題的復(fù)雜度逐漸加深,過去傳統(tǒng)的口頭咨詢出現(xiàn)了解答不正確,人力成本偏高等問題,而正確度較高的網(wǎng)絡(luò)咨詢卻又無法保障回應(yīng)的及時性[3~5]。因此,僅依賴于傳統(tǒng)的稅務(wù)咨詢方法,很難完全解決納稅人的咨詢需求,導(dǎo)致稅務(wù)機(jī)關(guān)面臨的咨詢壓力較大。
目前網(wǎng)絡(luò)稅務(wù)咨詢方式大多為在線留言,納稅人提出的問題不能夠立即得到回答。當(dāng)然也有一些平臺提供了半智能的在線問答服務(wù),但從工作人員的角度出發(fā),此類系統(tǒng)服務(wù)反而造成了新的問題[6~7]。這是由于此類平臺是在納稅人提出詢問后,由工作人員手動選擇相應(yīng)的問題再進(jìn)行回答,往往會導(dǎo)致答案比較模糊,反饋的質(zhì)量也不高。此外,這些系統(tǒng)進(jìn)行數(shù)據(jù)更新和采集時操作較為復(fù)雜,使得維護(hù)成本也相對較高。
因此,稅務(wù)問答系統(tǒng)的目標(biāo)就是對納稅人提出的稅務(wù)問題做出有針對性的簡潔易懂的回答。通過稅務(wù)問答系統(tǒng)受理大部分的咨詢業(yè)務(wù),使稅務(wù)服務(wù)和稅收業(yè)務(wù)得以改變、創(chuàng)新和提升。
現(xiàn)有問答系統(tǒng)的基本思路是通過數(shù)據(jù)模塊化分類以及問題關(guān)鍵詞提取,來實現(xiàn)對問題的準(zhǔn)確檢索[8~9]。因此,問答系統(tǒng)的性能高低與其基本算法、性能以及對數(shù)據(jù)的處理程度有著密切的關(guān)系。數(shù)據(jù)處理效果取決于對數(shù)據(jù)本身預(yù)處理和關(guān)鍵字提取的設(shè)計[10~11]。由于中文自身帶有特定的情感,以及語氣、語義、語境的復(fù)雜性,因此對于數(shù)據(jù)關(guān)鍵詞的處理是整個問答系統(tǒng)性能的關(guān)鍵點之一。其中許多限定領(lǐng)域的問答算法使用了單詞向量(Word2Vec)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)相結(jié)合的方式進(jìn)行構(gòu)建,該方法可以對多個數(shù)據(jù)集的處理,并且具有一定的可靠性和有效性?;谝陨显O(shè)想,本文將Word2Vec 和CNN模型添加到現(xiàn)有的稅務(wù)咨詢問答系統(tǒng)的初始框架中,繼而對稅務(wù)咨詢問答系統(tǒng)中的各類型指標(biāo)進(jìn)行改進(jìn)。
由于使用Word2Vec構(gòu)建詞向量是基于詞語進(jìn)行的,因此需要對輸入的語料數(shù)據(jù)在清洗后進(jìn)行詞匯分割,目前進(jìn)行中文詞匯分割的算法有很多,例如Jieba 分詞、正向最大匹配法、逆向最大匹配法等。通過各類分詞方法的嘗試,本文最終選擇采取Jieba 分詞的方法對詞匯進(jìn)行分割,分詞的主要原理是將一個句子進(jìn)行劃分,使其變成一個個組成句子的詞語[12]。先對各個詞語進(jìn)行編號并形成路徑,然后對所有路徑進(jìn)行可能性計算,最后找出最大可能性的路徑作為分詞結(jié)果,如式(1)所示:
W為句子的劃分,所產(chǎn)生的分詞為w1,w2,…,wn。最大可能性計算方法如式(2)所示:
Word2Vec是Google在2013年發(fā)布的基于神經(jīng)網(wǎng)絡(luò)的詞向量生成工具。它從包含高質(zhì)量的分布式詞向量的大量文檔中進(jìn)行學(xué)習(xí),涵蓋了大量的詞語含義和詞匯信息[13]。Word2Vec 的核心結(jié)構(gòu)是簡化的神經(jīng)網(wǎng)絡(luò)語言模型,主要分為兩個模型:ContinuousBag-of-Words(CBoW)和 ContinuousSkipgram(Skip-gram)[14]。在此選擇CBoW 模型,如圖1所示。

圖1 CBoW模型示意圖
優(yōu)化CBoW模型目標(biāo)如式(3)所示:
其中,wt是當(dāng)前詞,p(w|Context(w))是核心概率條件函數(shù),Word2Vec輸入可以作為可優(yōu)化參數(shù),更好地為相似性任務(wù)的疑問句提供服務(wù)。
上一節(jié)提到以詞向量作為輸入層,并對句子中的含義進(jìn)行建模,接下來要進(jìn)行語義識別和特征提?。?],這就需要通過卷積神經(jīng)網(wǎng)絡(luò)來具體實現(xiàn),最后才可以引入最大池化層(Max-Pooling)。合并各種結(jié)果后將卷積窗口下提取的特征引入Softmax,以實現(xiàn)問題類別的多分類算法。CNN(卷積神經(jīng)網(wǎng)絡(luò))分為三層結(jié)構(gòu):擁有局部特征提取功能的是卷積層;擁有降低數(shù)據(jù)維度功能的是池化層(即降維操作);擁有結(jié)果輸出功能并類似于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的部分的是全連接層[15]。
1)卷積層特征提取
如圖2 所示,對長度為n 個單詞的句子進(jìn)行劃分段落,再將長度為k 的單詞向量連接起來以形成n*k 的特征矩陣,然后使用不同長度的卷積窗口對其執(zhí)行卷積運算,從而獲得各種n-gram功能。

圖2 卷積層特征提取示意圖
2)池化層合并
在池化層,可以將多個卷積層的結(jié)果進(jìn)行合并。通過Max_Pooling 的處理,能夠?qū)⒍鄠€卷積層得到的特征進(jìn)行合并進(jìn)行降維操作以形成最終的特征。Max_Pooling有兩個優(yōu)點。
首先,本操作可以保證位置與旋轉(zhuǎn)不變形。使用Max_Pooling 時不必考慮強(qiáng)特征的位置,即無論強(qiáng)特征出現(xiàn)在哪個位置,Max_Pooling 都能將其提取出來。
其次,Max_Pooling 能減少模型參數(shù)數(shù)量,有利于減少模型過擬合問題。經(jīng)過操作后往往把數(shù)組轉(zhuǎn)換為單一數(shù)值,這樣能減少后續(xù)全連接層的神經(jīng)元個數(shù)。
3)輸出層多分類
Softmax 多重分類器作為模型的最后一層,計算過程如式(4)所示:
交叉嫡作為問答模型的目標(biāo)函數(shù),如式(5)所示:
卷積神經(jīng)網(wǎng)絡(luò)問答模型的第個神經(jīng)元的輸出如式(6)所示:
在同一時刻使用Softmax 和交叉熵,進(jìn)行誤差的反向傳播,得到的結(jié)果如式(7)所示:
卷積神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度(即卷積神經(jīng)網(wǎng)絡(luò)隱含層的層數(shù)和神經(jīng)元的個數(shù))取決于問題的復(fù)雜度:若模型復(fù)雜度過低,當(dāng)遇到復(fù)雜函數(shù)時很難找到其規(guī)律,擬合的效果會變差,也就達(dá)不到理想的擬合精度;若模型復(fù)雜度過高,計算量就會隨之增加,計算所需要的時間也會延長,整個模型的訓(xùn)練速度就會變慢,甚至?xí)霈F(xiàn)過擬合現(xiàn)象。在實際應(yīng)用中,模型復(fù)雜度一般都是依靠使用者的經(jīng)驗或者實驗進(jìn)行調(diào)節(jié)的,這種調(diào)節(jié)方式主要依靠的是使用者的主觀判斷,往往并不能獲取正確的樣本,導(dǎo)致模型訓(xùn)練存在誤差。訓(xùn)練誤差和訓(xùn)練模型復(fù)雜度之間的相關(guān)性如圖3所示。

圖3 訓(xùn)練誤差和模型復(fù)雜度相關(guān)性示意圖
可見,當(dāng)模型復(fù)雜度達(dá)到一定程度時,隨著模型復(fù)雜度的增加,雖然訓(xùn)練誤差仍在繼續(xù)降低,但實際的測試誤差卻不斷上升。即在訓(xùn)練集進(jìn)行測試的時候,性能表現(xiàn)很好,但當(dāng)在測試集進(jìn)行測試時,性能表現(xiàn)較差,這種現(xiàn)象被稱為過擬合。導(dǎo)致過擬合現(xiàn)象的主要原因就是訓(xùn)練模型的復(fù)雜度較高,最直觀的辦法就是降低訓(xùn)練模型復(fù)雜度,但這也會導(dǎo)致擬合精度下降。
正則化為解決上述問題提供了思路,通過正則化可以制約訓(xùn)練模型最終的復(fù)雜度,降低過擬合現(xiàn)象出現(xiàn)的概率,從而提升了神經(jīng)網(wǎng)絡(luò)面對新事物的能力,使得神經(jīng)網(wǎng)絡(luò)能夠更好地適應(yīng)各種模型。正則化是通過引入矩陣范數(shù)來計算損失函數(shù),由此來對模型的復(fù)雜程度做出懲罰。正則化一般是模型復(fù)雜的單調(diào)遞增函數(shù),如式(8)所示:

L1 范數(shù)正則化是指所有特征系數(shù)的絕對值求和,見式(9):
L2 范數(shù)正則化是指所有特征系數(shù)的平方和再求平方根,見式(10):
L1范數(shù)和L2范數(shù)都是通過求和來限制參數(shù)的大小,但所起到的效果卻大不相同:L1 范數(shù)每次更新時會加上一個常數(shù),往往會導(dǎo)致特征系數(shù)為0,這樣該特征便不能影響訓(xùn)練結(jié)果,使得特征稀疏化,所以比較合適用來進(jìn)行特征選擇;而L2 范數(shù)會對特性系數(shù)進(jìn)行比例縮放,只會使特征系數(shù)越來越小但不會為0,可以有效防止模型過擬合。
本文主要是對L2 范數(shù)正則化進(jìn)行應(yīng)用,L2 范數(shù)正則化可以起到簡化模型的作用,能夠?qū)㈥P(guān)鍵權(quán)值的影響控制在較小的范圍內(nèi),從而在一定的程度上降低過擬合的風(fēng)險。
ReLU(Rectified Linear Unit),即修正線性單元。ReLU的原理是篩選出模型中的不必要特征并將其刪除,用于降低計算量、解決梯度消失問題和緩解過擬合問題。為提高本文模型的計算效率,降低計算成本,通過ReLU 算法對模型進(jìn)行進(jìn)一步優(yōu)化,提高模型的精準(zhǔn)度。ReLU 激活函數(shù)的表現(xiàn)形式如圖4所示。

圖4 ReLU激活函數(shù)示意圖
ReLU激活函數(shù)的計算方法如式(11)所示:
可以看出ReLU 函數(shù)是一個分段線性函數(shù),負(fù)數(shù)值為0,正數(shù)值為其本身。而這種單邊抑制會使得神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元具有稀疏激活性,可以有效解決當(dāng)神經(jīng)網(wǎng)絡(luò)模型增加N 層之后出現(xiàn)的過擬合問題。從函數(shù)圖中可以看出,ReLU函數(shù)具有“轉(zhuǎn)折點”,而ReLU的非線性恰恰就是通過這個“轉(zhuǎn)折點”所表現(xiàn)的,由于ReLU的非負(fù)區(qū)間的梯度是常數(shù),所以ReLU 不會出現(xiàn)梯度消失的問題,從而使整個模型的收斂處在一個穩(wěn)定的狀態(tài)。
在系統(tǒng)設(shè)計開始考慮到系統(tǒng)的穩(wěn)定性,因此系統(tǒng)整體架構(gòu)采用的微服務(wù)開發(fā),由于SpringBoot 具有很強(qiáng)的可擴(kuò)展性以及能夠?qū)崿F(xiàn)自動裝配,因此對于每個服務(wù)個體使用SpringBoot框架進(jìn)行開發(fā)。而對于微服務(wù)間的注冊以及調(diào)用熔斷等需求,使用阿里巴巴旗下的SpringCloudAlibaba 進(jìn)行開發(fā),安全框架選用SpringSecurity,從而使服務(wù)間的調(diào)用更加穩(wěn)定。數(shù)據(jù)緩存工具選用Redis 數(shù)據(jù)結(jié)構(gòu)服務(wù)器,將事先頁面需要的數(shù)據(jù)存在Redis 數(shù)據(jù)庫中,等頁面有需要就從Redis 查看有沒有所需的數(shù)據(jù),如果沒有就查詢MySQL 數(shù)據(jù)庫,同時將查詢出來的數(shù)據(jù)存入Redis 數(shù)據(jù)庫中一份,這樣一旦有下一次訪問,就可以直接從Redis數(shù)據(jù)庫中取出。由于Redis數(shù)據(jù)庫是基于內(nèi)存的,且內(nèi)部機(jī)制是IO 多路復(fù)用機(jī)制,效率極高,響應(yīng)速度也自然極高,這樣可以在一定程度上改善用戶的體驗感。
4.2.1 數(shù)據(jù)導(dǎo)入模塊
EasyExcel 是JAVA 用于操作Excel 表格的工具庫,可以對各個類型的Excel文件進(jìn)行讀寫操作,通過繼承AnalysisEventListener 監(jiān)聽器,去讀取Excel文件每一行數(shù)據(jù),并轉(zhuǎn)換成SQL 語言,轉(zhuǎn)存至MySQL數(shù)據(jù)庫中。系統(tǒng)管理員僅需提前在Excel表格中進(jìn)行問答數(shù)據(jù)集的編輯工作,之后將該Excel文件保存再本地,然后上傳至系統(tǒng)即可實現(xiàn)批量數(shù)據(jù)導(dǎo)入的功能,提高了系統(tǒng)管理員的工作效率。Excel文件導(dǎo)入的界面如圖5所示。

圖5 Excel文件導(dǎo)入界面示意圖
4.2.2 問答搜索模塊
問答搜索模塊的流程是:用戶首先輸入搜索內(nèi)容,前端讀取內(nèi)容后,傳至服務(wù)器,之后對讀取到的內(nèi)容進(jìn)行分詞,構(gòu)建詞向量然后借助神經(jīng)網(wǎng)絡(luò)進(jìn)行語義匹配,最后將匹配的結(jié)果傳輸?shù)角岸耍故驹谟脩裘媲?。問答搜索模塊的前端界面如圖6所示。

圖6 問答搜索界面示意圖
無論是納稅人還是稅務(wù)工作者,在面對涉稅問題時都需要掌握諸多繁雜的稅收法律法規(guī)以及相關(guān)的政策。因此,研究和開發(fā)稅務(wù)咨詢智能問答系統(tǒng)具有重要的應(yīng)用價值。本文通過對研究目前現(xiàn)有的智能問答關(guān)鍵技術(shù),成功構(gòu)建了基于詞向量和卷積神經(jīng)網(wǎng)絡(luò)的稅務(wù)問答系統(tǒng)。從算法實現(xiàn)的角度看,通過使用Jieba 分詞和Word2Vec 詞向量完成了語料預(yù)處理工作,并在卷積神經(jīng)網(wǎng)絡(luò)(CNN)的訓(xùn)練過程中加入了正則化和ReLU 算法等優(yōu)化方法,提升了模型訓(xùn)練的效果。從系統(tǒng)實現(xiàn)的角度看,采用了目前流行的微服務(wù)框架,對系統(tǒng)各個模塊分別設(shè)計,并最終完成了系統(tǒng)的整合。本系統(tǒng)成本較為低廉且便于維護(hù),對稅務(wù)機(jī)關(guān)來說減輕了工作壓力,降低了咨詢成本。對納稅人來說能夠方便快捷地獲取稅務(wù)知識,提升了納稅人對稅務(wù)咨詢服務(wù)的滿意度。