王 麗
(湖南環(huán)境生物職業(yè)技術(shù)學(xué)院,湖南 衡陽 421005)
官方正版ChatGPTAI 對話軟件是一款可以實(shí)現(xiàn)人工智能AI 對話的軟件,可以與用戶進(jìn)行實(shí)時(shí)對話、智能交互,可以對用戶提出來的問題進(jìn)行分析,還可以進(jìn)行擬人化對話,具備模仿人物發(fā)送推特、軟件編寫以及構(gòu)建虛擬機(jī)等功能。
21 世紀(jì),信息科技飛速發(fā)展,人們對各種軟件的要求越來越高,例如網(wǎng)頁搜索、AI 對話搜索,這也提高了對智能檢索工具的準(zhǔn)確性和語義解析的要求[1]。因此,研發(fā)了搜索引擎AI 智能對話系統(tǒng),該系統(tǒng)可以基于自然語言和上下文進(jìn)行提問,從而簡化搜索步驟。除此之外,它還可以以文本或語音等形式將匹配的問題呈現(xiàn)給用戶,方便用戶找到自己想要的信息,更好地滿足用戶的檢索需求,節(jié)省用戶識別大量相關(guān)匹配答案的時(shí)間。與傳統(tǒng)的基于關(guān)鍵詞的搜索引擎相比,該系統(tǒng)只需要用戶采用自然語言進(jìn)行描述,具備話術(shù)理解、關(guān)鍵詞拆分以及主題抽取等功能。AI 對話系統(tǒng)的執(zhí)行流程如圖1 所示。
圖1 AI 對話的流程
在研究AI 問答系統(tǒng)的過程中,要確定其算法,就需要對排序?qū)W習(xí)方法進(jìn)行學(xué)習(xí)和研究[2]。通過問題設(shè)定對其進(jìn)行表示,LTR 為排序?qū)W習(xí),在對話中采用機(jī)器學(xué)習(xí)的方法,從而解決排序問題,SVM 分類流程是排序?qū)W習(xí)算法中的主要流程(主要分為4 個(gè)步驟),對問題進(jìn)行設(shè)定后,通過直觀、標(biāo)準(zhǔn)以及對偶等進(jìn)行表示,從而確定最大化最小距離M、最小化參數(shù)(w和b)以及最大化參數(shù)a。
SVM 支持向量機(jī)是一種分類算法,將數(shù)據(jù)分隔在平面兩側(cè)并對數(shù)據(jù)進(jìn)行分類[3]。
SVM 分類主要有2 種情況:1) 線性可分的情況,相對簡單地闡明了SVM 的分類原理,去除復(fù)雜的計(jì)算和多種限制因子。2) 線性不可分的情況,廣泛應(yīng)用于實(shí)際問題中,流程相對復(fù)雜。
對二分類問題,在二維平面中,超平面就是1 條直線,1 條直線就可以將2 個(gè)部分的數(shù)據(jù)分開,由此可見,線性分類器用1 個(gè)超平面將2 類樣本分開。
定義線性分類器的判別函數(shù)sng如公式(1)所示。
式中:w為權(quán)重向量;b為偏置項(xiàng),是一個(gè)標(biāo)量;x為樣本的特征向量。
在分類流程中,SVM 目標(biāo)就是將樣本具體化,定義1 組數(shù)據(jù)并對超平面進(jìn)行尋找和定義[4]。假設(shè)位于分類平面兩側(cè)的樣本的特征向量為x,類別標(biāo)簽為y,正樣本和負(fù)樣本值為+1 和-1。SVM 為樣本尋找一個(gè)最優(yōu)分類超平面,如公式(2)所示,正樣本如公式(3)所示,負(fù)樣本如公式(4)所示。
在正確分類樣本后,要使求解正負(fù)樣本的樣本與超平面距離大,就需要采用距離公式對其幾何進(jìn)行解析,每個(gè)樣本點(diǎn)離分類超平面的距離公式如公式(5)所示
式中:||w||為向量的L2范數(shù)(L2范數(shù)為||w||2=(∑i=1nxi2)1/2);xi為橫坐標(biāo)數(shù)值。
簡化公式(5),給w和b加上約束:mini|wTxi+b|表示正/負(fù)樣本帶入超平面方程值的絕對值為1。正/負(fù)樣本和最大間隔的直觀印象如圖2 所示。
圖2 SVM 的正/負(fù)樣本和最大間隔
分類超平面與正/負(fù)樣本之間的間隔如公式(6)所示。
式中:d(w,b)為間隔;minxi,yi=-1d(w,b;xi)為函數(shù)wxb=0 與wx-b=-1 的間隔;minxi,yi=1d(w,b;xi)為函數(shù)wxb=0 與wx-b=1 的間隔。
為了獲得以上函數(shù)的最大間隔,需要使公式(7)最小化。
通過線性可分的情況簡單介紹了SVM 進(jìn)行分類的原理:通過尋求1 個(gè)超平面,使正/負(fù)樣本距離直線最小距離是最大值(最大間隔)。但是,現(xiàn)實(shí)情況下,很多分類問題都是線性不可分的,需要加上松弛變量和懲罰因子,其中懲罰因子是對錯(cuò)誤分類的樣本進(jìn)行懲罰,如果松弛變量不為0,就表示樣本突破了不等式約束條件。由于線性不可分的情況涉及拉格朗日優(yōu)化和對偶特性構(gòu)建方程,原理推導(dǎo)求解過程復(fù)雜,線性不可分情況下分類的求解過程如圖3 所示。
圖3 線性不可分情況下的求解思路
SVMrank排序模型的基本思想如下:將排序問題轉(zhuǎn)化為利用Pairwise 進(jìn)行兩兩比較再進(jìn)行分類的分類問題,并采用SVM 分類模型進(jìn)行學(xué)習(xí)求解。
1.3.1 排序問題轉(zhuǎn)化為分類問題
SVMrank的模型是一個(gè)解決排序問題的分類模型[5]。如圖4 所示,2 種顏色的圓圈分別代表2 種不同的排序得分(也可以有更多得分情況),需要找到1 個(gè)平面,使這種圓圈完全分開。該文使用Pairwise 的思想:首先,將所有的樣本點(diǎn)進(jìn)行兩兩組對,并對2 個(gè)數(shù)據(jù)的特征值進(jìn)行相減作為新的樣本點(diǎn)特征。如果x1比x2更好,那么x1-x2的標(biāo)簽就為1,反之為-1,這樣就已經(jīng)將一個(gè)排序問題轉(zhuǎn)化成二分類問題,可以直接通過SVM 尋找1 個(gè)超平面來劃分2 種樣本點(diǎn)。在三維空間尋求的1 個(gè)平面將2 類樣本數(shù)據(jù)分類的情況如圖4 所示。
圖4 三維平面分類情況
SVMrank算法在實(shí)際使用過程中輸入數(shù)據(jù)(訓(xùn)練數(shù)據(jù)輸入的格式為<line>.=.<target>qid:<qid><feature>:<value>…#<info>)的步驟如下:1) SVMrank讀取1 批包括特征值(feature:value)的輸入數(shù)據(jù)。2) 根據(jù)qid(計(jì)算機(jī)編程符號)區(qū)分不同的問題,對Pairwise 只在同一個(gè)問題的結(jié)果中進(jìn)行比較。3) 第一個(gè)參數(shù)line是用戶或機(jī)器對該問題與搜索問題相似程度的評價(jià),line越大表示越相似。4) 通過line值最大的問題與其他問題構(gòu)成1 個(gè)兩兩對比的比較對,通過這種比較對并綜合比較輸入的特征值,最終尋找與同一個(gè)搜索問題相關(guān)的排序序列。
通過以上步驟,在兩兩比較的分類過程下,最終得出相關(guān)問題的排序結(jié)果。
1.3.2 SVMrank 的使用
根據(jù)官網(wǎng)的指導(dǎo),SVMrank的使用主要分為2 個(gè)方面:1) 模型的訓(xùn)練命令。命令格式為svm_rank_learn -c 3 D:/example3/train.dat D:/example3/model。2) 測試數(shù)據(jù)通過模型獲取結(jié)果排序情況命令。命令格式為svm_rank_classify D:/example3/test.dat D:/example3/model D:/example3/predictions。
Lucene 是基于Java 的高效全文檢索庫,Lucene 主要面向文檔類的檢索。
在了解Lucene 是一個(gè)全文檢索庫的前提下,詳細(xì)介紹Lucene 具體實(shí)現(xiàn)檢索的過程,包括建立索引庫、實(shí)現(xiàn)搜索功能。
建立索引庫是對一系列文件數(shù)據(jù)進(jìn)行數(shù)據(jù)讀取并分析分詞,將數(shù)據(jù)綁定成員變量(field)后,生成索引表并存入硬盤。
接下來通過舉例詳細(xì)介紹建立索引的流程:1) 存在1 組需要被索引的文檔。文檔的樣例見表1。2) 通過讀取以上數(shù)據(jù),經(jīng)過語法分析和語言處理對數(shù)據(jù)進(jìn)行分詞,形成一系列詞。詞統(tǒng)計(jì)樣例見表2。
表1 數(shù)據(jù)文檔樣例
表2 詞統(tǒng)計(jì)樣例
2.1.1 試驗(yàn)語料庫
該文的試驗(yàn)數(shù)據(jù)主要以真實(shí)的85G 點(diǎn)擊數(shù)據(jù)文檔作為元數(shù)據(jù)。其中,有6 500 萬開放域問答對,主要來源于百度知道、愛問知識人以及天涯問答等互動(dòng)問答平臺,涵蓋地區(qū)、電腦網(wǎng)絡(luò)、電子數(shù)碼、健康生活、教育科學(xué)、商業(yè)理財(cái)、社會(huì)民生、體育運(yùn)動(dòng)、文化藝術(shù)、心理分析、醫(yī)療衛(wèi)生、游戲、娛樂休閑以及資源共享等領(lǐng)域。該試驗(yàn)使用的85G 數(shù)據(jù)的類型分布如圖5 所示,數(shù)據(jù)中與體育運(yùn)動(dòng)相關(guān)的文檔含量最高,與資源共享相關(guān)的文檔含量最低。
圖5 數(shù)據(jù)類型分布圖
2.1.2 問答知識的人工標(biāo)注
該試驗(yàn)需要對模型進(jìn)行訓(xùn)練,主要通過提供的網(wǎng)頁接口生成模型訓(xùn)練數(shù)據(jù)。通過輸入1 個(gè)問題進(jìn)行問題檢索,默認(rèn)檢索10 條數(shù)據(jù),需要判斷10 條數(shù)據(jù)中最優(yōu)的檢索反饋,采用Pairwise 的方式進(jìn)行兩兩比較,最終結(jié)果會(huì)以txt 文件的形式輸出,便于后續(xù)計(jì)算數(shù)據(jù)。該試驗(yàn)約標(biāo)注了200 個(gè)問題,通過比較每個(gè)問題的10 個(gè)相似/相關(guān)問題生成部分手工標(biāo)注的數(shù)據(jù),共涉及2 000 個(gè)問題。
通過試驗(yàn)所得數(shù)據(jù)以及相關(guān)分析見表3(表3 是后端Java 檢索和特征算法調(diào)用后重排序的計(jì)分情況),理論上將選擇排序最靠前的問答對中的答案作為返回結(jié)果,該試驗(yàn)中取“0.5”。
表3 特征算法計(jì)算結(jié)果
綜合3 種特征疊加后檢索的rankSVM 最終最高得分為1.359 801,該得分對應(yīng)的問題為“嬰兒枕頭高度嬰兒枕頭高度多少合適?-愛問知識人”,對應(yīng)的答案為“3 個(gè)月以上的寶寶才需要用枕頭,高度以3 cm 左右為宜”。因此,根據(jù)該系統(tǒng)的設(shè)置,在調(diào)用微信服務(wù)后,會(huì)根據(jù)前臺請求的問題“枕頭的高度多少合適”將答案“3 個(gè)月以上的寶寶才需要用枕頭,高度以3 cm 左右為宜”返回給用戶。
調(diào)用程序中socket 返回?cái)?shù)據(jù)就可以得到反饋答案數(shù)據(jù)情況,見表4。
表4 問答數(shù)據(jù)樣例
通過上文介紹的NDCG 評價(jià)方法對該試驗(yàn)數(shù)據(jù)進(jìn)行綜合評價(jià),以判定檢索結(jié)果的質(zhì)量。
以下以問題“枕頭的高度多少合適”為例,計(jì)算4 種檢索情況的評價(jià)計(jì)算詳情:1) 原問題為“枕頭的高度多少合適”。2) 特征詳情見表5。
表5 特征算法組合詳情
Lucene 默認(rèn)檢索方式的評價(jià)情況見表6,以下結(jié)果沒有對增加特征算法進(jìn)行計(jì)算。
表6 Lucene 默認(rèn)檢索結(jié)果
對Lucene 默認(rèn)檢索方式的評價(jià)結(jié)果進(jìn)行分析可知,手動(dòng)評價(jià)序列為[5,3,6,5,5,4,2,2,3,1],經(jīng)過NDCG評價(jià)方法評定,最終該搜索的評價(jià)得分為0.928 3。
首先,筆者結(jié)合相關(guān)知識構(gòu)建試驗(yàn)數(shù)據(jù)并組織試驗(yàn),基于多特征搭建候選答案檢索系統(tǒng)。根據(jù)運(yùn)行的檢索問答實(shí)情制定檢索結(jié)果的評價(jià)機(jī)制(NDCG),以判斷檢索的質(zhì)量。其次,采用Python、Java 語言搭建檢索問答系統(tǒng)綜合,以Lucene為檢索基礎(chǔ),通過附加BM25、VSM 以及Sentence2Vec 三類特征對檢索數(shù)據(jù)進(jìn)行重排序,在默認(rèn)檢索中抽出最優(yōu)匹配的問題,將最優(yōu)問題匹配的答案返回給用戶。最后,結(jié)合微信服務(wù)展示試驗(yàn)功能,靈活地模擬問答的實(shí)際情況。經(jīng)過試驗(yàn)的反復(fù)測試,該系統(tǒng)基本實(shí)現(xiàn)AI 問答的功能。