




摘" 要:自然語(yǔ)言理解技術(shù)(NLU)是當(dāng)下人工智能領(lǐng)域的熱門研究課題,在幫助計(jì)算機(jī)準(zhǔn)確理解人類語(yǔ)言,以及真正實(shí)現(xiàn)機(jī)器的智能化發(fā)揮重要作用。該文基于自然語(yǔ)言理解技術(shù)設(shè)計(jì)數(shù)據(jù)庫(kù)查詢系統(tǒng),首先介紹數(shù)據(jù)庫(kù)查詢系統(tǒng)中使用到的關(guān)鍵技術(shù),例如自動(dòng)分詞技術(shù)、消歧處理算法、目標(biāo)短語(yǔ)提取技術(shù)等。隨后使用Jbuilder10開發(fā)工具和Java編程語(yǔ)言設(shè)計(jì)數(shù)據(jù)庫(kù)查詢系統(tǒng),并對(duì)其自動(dòng)分詞和語(yǔ)句查詢功能展開驗(yàn)證。結(jié)果表明,在輸入的116條語(yǔ)句中,正確分詞率達(dá)到92.2%,查詢正確率達(dá)到80.2%,達(dá)到設(shè)計(jì)預(yù)期。
關(guān)鍵詞:數(shù)據(jù)庫(kù)查詢系統(tǒng);自然語(yǔ)言理解技術(shù);自動(dòng)分詞;查詢目標(biāo);智能化
中圖分類號(hào):TP391" " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號(hào):2095-2945(2023)18-0023-04
Abstract: Natural language understanding (NLU) technology is a hot research topic in the field of artificial intelligence, which plays an important role in helping computers understand human language accurately and realizing the intelligence of machines. This paper designs a database query system based on natural language understanding technology. Firstly, it introduces the key technologies used in the database query system, such as automatic word segmentation, disambiguation processing algorithm, target phrase extraction technology and so on. Then, the database query system is designed by using Jbuilder10 development tools and Java programming language, and its automatic word segmentation and sentence query functions are verified. The results show that among the 116 sentences entered, the correct word segmentation rate is 92.2%, and the query accuracy rate is 80.2%, which meets the expectations for the design.
Keywords: database query system; natural language understanding (NLU) technology; automatic word segmentation; query target; intelligence
早在20世紀(jì)50年代,美國(guó)的IBM公司就開展了計(jì)算機(jī)語(yǔ)言處理的研究,目前國(guó)際上關(guān)于自然語(yǔ)言理解的研究成果雖然豐碩,但是研究對(duì)象以英語(yǔ)、法語(yǔ)等語(yǔ)種為主,相比之下國(guó)內(nèi)關(guān)于漢語(yǔ)的自然語(yǔ)言處理研究則起步較晚。近年來,清華大學(xué)的黃昌寧教授、東北大學(xué)的姚天順教授等在計(jì)算機(jī)語(yǔ)言學(xué)領(lǐng)域展開了大量的探索,取得了可喜的研究成果。將自然語(yǔ)言理解技術(shù)應(yīng)用到數(shù)據(jù)庫(kù)查詢系統(tǒng)中,必須要解決漢語(yǔ)語(yǔ)句特有的歧義切分問題、多動(dòng)詞聯(lián)用問題、句子詞序問題等眾多難題。本文以自動(dòng)分詞、歧義處理等方面作為切入點(diǎn),對(duì)數(shù)據(jù)庫(kù)查詢系統(tǒng)中自然語(yǔ)言理解技術(shù)展開了探討。
1" 數(shù)據(jù)庫(kù)查詢系統(tǒng)中常用的自然語(yǔ)言理解技術(shù)
1.1" 自動(dòng)分詞技術(shù)
由于中文文本中的字詞之間沒有類似于英語(yǔ)的空格,因此數(shù)據(jù)庫(kù)查詢系統(tǒng)在分析中文文本時(shí)首要任務(wù)就是自動(dòng)分詞。目前常用的自動(dòng)分詞技術(shù)有機(jī)械分詞法、統(tǒng)計(jì)分詞法等,但是在具體應(yīng)用中均存在一定的缺陷。例如機(jī)械分詞法的切詞速度較慢,而統(tǒng)計(jì)分詞法只適合一些普通文本的分詞等。本文在設(shè)計(jì)數(shù)據(jù)庫(kù)查詢系統(tǒng)時(shí),基于自然語(yǔ)言理解技術(shù)提出了“最大正向匹配算法+尾部歧義處理+回溯分詞算法”的復(fù)合式自動(dòng)分詞技術(shù),其實(shí)現(xiàn)方式如下。
讀入待處理語(yǔ)句后,使用最大正向匹配算法對(duì)該語(yǔ)句做常規(guī)切分,切分后得到若干詞;使用尾部歧義處理進(jìn)行詞的歧義檢查,根據(jù)檢查結(jié)果找出最大交集型歧義字段。判斷該字段是否為空,如果不為空則依據(jù)“歸右原則”處理交集型歧義。在完成第一次最大正向匹配分詞后,記錄分詞結(jié)果,同時(shí)繼續(xù)查詢待處理語(yǔ)句的其他部分,直到發(fā)現(xiàn)語(yǔ)法或語(yǔ)義錯(cuò)誤,則返回重新匹配(回溯算法),達(dá)到對(duì)詞匯準(zhǔn)確切分的效果。
1.2" 消歧技術(shù)
消歧又稱歧義字段切分,在數(shù)據(jù)庫(kù)查詢系統(tǒng)中應(yīng)用消歧技術(shù)能顯著提升切分精度。根據(jù)構(gòu)成形式的不同,將歧義字段分為2種常見類型,即交集型歧義和組合型歧義。假設(shè)字段為XYZ,并且存在XY∈P、YZ∈P,此時(shí)字段XYZ即為交集型歧義;假設(shè)字段為XY,并且存在XY∈P,A∈P、Y∈P,此時(shí)字段AB即為組合型歧義[1]。這里的XYZ、ZY為字串,P表示分詞庫(kù)。在中文文本中,超過90%的字串都屬于交集型歧義,本文重點(diǎn)討論這類字串的分詞與消歧處理,其流程如圖1所示。
在分詞的尾部歧義處理中,查找最大交際字段是關(guān)鍵操作。本文選擇函數(shù)findIntersection實(shí)現(xiàn)這一功能。該函數(shù)有3個(gè)輸入?yún)?shù),分別是sne、pos1、al,程序設(shè)計(jì)如下
string findIntersection(int posl,string sen,arraylist al){
//posl:從句子中的當(dāng)前位置查找最大交集字段
//ssen:進(jìn)行句子分詞
//al:分詞使用到的分詞知識(shí)庫(kù)
int pso2=pos1+1
//找出從pso1開始的最大匹配}
1.3" 中間語(yǔ)言生成技術(shù)
1.3.1" 生成查詢目標(biāo)
結(jié)合目標(biāo)短語(yǔ)的特征,可以將查詢目標(biāo)分成4種類型,即屬性目標(biāo)、實(shí)體默認(rèn)目標(biāo)、全值目標(biāo)和聚集目標(biāo)。這里以屬性目標(biāo)為例,簡(jiǎn)要分析其處理流程。
屬性目標(biāo)的結(jié)構(gòu):目標(biāo)短語(yǔ)=P(屬性)。由于屬性目標(biāo)在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的實(shí)體數(shù)量是不同的,可能是一個(gè),也可能是多個(gè),可借助于實(shí)體數(shù)組來消除歧義[2]。原理是從實(shí)體數(shù)組中按照順序取出實(shí)體,并判斷該實(shí)體的所有屬性與目標(biāo)短語(yǔ)的屬性有無交集,實(shí)體的提取與交集驗(yàn)證流程如圖2所示。
例如需要查詢的語(yǔ)句為“顯示香蕉的單價(jià)?!蹦繕?biāo)短語(yǔ)=單價(jià)(P),參考數(shù)據(jù)庫(kù)表知識(shí)庫(kù)可知屬性“單價(jià)”對(duì)應(yīng)的表只有“產(chǎn)品”,故查詢目標(biāo)=產(chǎn)品.單價(jià),將查詢目標(biāo)加入查詢目標(biāo)數(shù)組即可。如果需要查詢的語(yǔ)句為“顯示購(gòu)物超市的電話。”目標(biāo)短語(yǔ)=電話(P),這時(shí)數(shù)據(jù)庫(kù)表知識(shí)庫(kù)中屬性“電話”對(duì)應(yīng)的表有“供應(yīng)商”和“訂單”,根據(jù)上文分析需要使用實(shí)體數(shù)組來排除歧義。“購(gòu)物超市”對(duì)應(yīng)的屬性=“供應(yīng)商名稱”,實(shí)體=“供應(yīng)商”。把條件短語(yǔ)中的實(shí)體“供應(yīng)商”加入實(shí)體數(shù)組。從實(shí)體數(shù)組中取出實(shí)體后,獲取屬性allp,判斷allp與“電話”之間有無交集。如果有,則確定“電話”對(duì)應(yīng)的實(shí)體為“供應(yīng)商”,將“查詢目標(biāo)=供應(yīng)商.電話”加入查詢目標(biāo)數(shù)組。
1.3.2" 生成查詢條件
條件段是查詢語(yǔ)句的重要組成部分,通常將查詢語(yǔ)句中除了查詢目標(biāo)、查詢動(dòng)詞以外的其他部分統(tǒng)稱為條件段。從構(gòu)成上看,條件段包括一個(gè)分組段,以及若干條件語(yǔ)句。在自然語(yǔ)言理解技術(shù)中,常見的查詢條件有2類,分別是值條件、聚集條件[3]。值條件的結(jié)構(gòu):條件短語(yǔ)=V,查詢條件為數(shù)據(jù)庫(kù)某一屬性的值。例如,條件短語(yǔ)為“找出香蕉的單價(jià)?!边@里的“香蕉”就是“產(chǎn)品名稱”這個(gè)屬性的值,故屬于值條件。同樣的,某個(gè)屬性的值也可能包含若干個(gè),在實(shí)際分析中必須要排除歧義。屬性值條件的分析流程如圖3所示。
仍然以語(yǔ)句“找出香蕉的單價(jià)”為例,按照?qǐng)D3所示流程首先要通過檢索分詞知識(shí)庫(kù)的方式,確定“香蕉”的屬性為“產(chǎn)品名稱”,確定屬性后再通過數(shù)據(jù)庫(kù)表知識(shí)庫(kù)確定“香蕉”對(duì)應(yīng)的實(shí)體,分別有“產(chǎn)品”和“銷售商”2種。為了進(jìn)一步驗(yàn)證該實(shí)體到底屬于哪種類型,引入了實(shí)體數(shù)組的查詢條件作為輔助判斷的依據(jù)。結(jié)果顯示,查詢條件“單價(jià)”對(duì)應(yīng)的實(shí)體為“產(chǎn)品”。這樣就能確定“香蕉”的實(shí)體為“產(chǎn)品”,將條件“產(chǎn)品.產(chǎn)品名稱=香蕉”,以及實(shí)體和條件類型加入到查詢條件數(shù)組中,完成本次屬性值條件分析。
聚集條件的結(jié)構(gòu):條件短語(yǔ)=PE。查詢結(jié)果以聚集函數(shù)的形式表示,以例句“查找單價(jià)最高的產(chǎn)品。”為例,“單價(jià)最高”就是一個(gè)聚集函數(shù)。其實(shí)現(xiàn)方式:選定條件短語(yǔ)后,利用分詞知識(shí)庫(kù)尋找P對(duì)應(yīng)的實(shí)體E;如果兩者為“一對(duì)一”關(guān)系,則直接將P、E加入到查詢條件數(shù)組中;如果兩者為“一對(duì)多”關(guān)系,則使用實(shí)體數(shù)組消除歧義,程序?yàn)?/p>
where E.P
in(select fun(E.P)
from E)
1.3.3" 中間語(yǔ)言
中間語(yǔ)言(MQL)是自然漢語(yǔ)轉(zhuǎn)化成SQL語(yǔ)句的中間過渡形式,本文在設(shè)計(jì)數(shù)據(jù)庫(kù)查詢系統(tǒng)時(shí),主要基于2個(gè)標(biāo)準(zhǔn)選擇中間語(yǔ)言:其一是中間語(yǔ)言能準(zhǔn)確、完整地表達(dá)漢語(yǔ)句子的語(yǔ)義;其二是中間語(yǔ)言易于轉(zhuǎn)化為SQL語(yǔ)句。本文所用中間語(yǔ)言的核心部分為各種類型的數(shù)組,例如分詞數(shù)組、實(shí)體數(shù)組、查詢條件數(shù)組等。
在中文語(yǔ)句經(jīng)過自動(dòng)分詞處理后,系統(tǒng)自動(dòng)剔除分詞中無法識(shí)別的內(nèi)容,將其他的部分存儲(chǔ)到句子分詞數(shù)組中,數(shù)組中的每個(gè)詞都占據(jù)著一個(gè)獨(dú)立的節(jié)點(diǎn),數(shù)據(jù)結(jié)構(gòu)見表1。
實(shí)體數(shù)組本質(zhì)上是一個(gè)由實(shí)體構(gòu)成的數(shù)組隊(duì)列,由2部分構(gòu)成:其一是產(chǎn)生句子分詞數(shù)組時(shí),能夠直接從查詢語(yǔ)句中提取出來的實(shí)體;其二是在分析查詢條件屬性時(shí),分析出來的實(shí)體[4]。實(shí)體數(shù)組的數(shù)據(jù)結(jié)構(gòu)相對(duì)來說比較簡(jiǎn)單,通常用char entity[]表示實(shí)體名,用char defaultp[]表示默認(rèn)屬性名。除此之外,像查詢目標(biāo)數(shù)組、查詢條件數(shù)組及分組數(shù)組等,也都有相應(yīng)的數(shù)據(jù)結(jié)構(gòu),不再一一贅述。
2" 基于自然語(yǔ)言理解技術(shù)的數(shù)據(jù)庫(kù)查詢系統(tǒng)功能驗(yàn)證
2.1" 軟件功能設(shè)計(jì)
本文使用Jbuilder10開發(fā)工具和Java編程語(yǔ)言開發(fā)了基于自然語(yǔ)言的數(shù)據(jù)庫(kù)查詢系統(tǒng)。用戶在登錄該系統(tǒng)后,可以在文本輸入界面輸入中文文本,由系統(tǒng)基于自然語(yǔ)言理解技術(shù)對(duì)輸入文本進(jìn)行分析,并將查詢結(jié)果轉(zhuǎn)換成標(biāo)準(zhǔn)的MQL查詢語(yǔ)句,在系統(tǒng)的人機(jī)交互界面上顯示[5]。為了驗(yàn)證系統(tǒng)功能的實(shí)現(xiàn)情況,本次實(shí)驗(yàn)中挑選了2個(gè)例句。
例句1:找出家家悅的電話。
例句2:找出價(jià)格高于面粉并且供應(yīng)商城市為河南的產(chǎn)品、價(jià)格和庫(kù)存量。
2.2" 系統(tǒng)實(shí)驗(yàn)結(jié)果
對(duì)于例句1,系統(tǒng)對(duì)該語(yǔ)句進(jìn)行自動(dòng)分詞處理后,得到結(jié)果“找出(S)家家悅(V)的(V)電話(P)”。從數(shù)據(jù)庫(kù)表知識(shí)庫(kù)中匹配出目標(biāo)短語(yǔ)“電話(P)”和條件短語(yǔ)“家家悅(V)”。同時(shí),該語(yǔ)句中的查詢目標(biāo)是“電話”,對(duì)應(yīng)的目標(biāo)實(shí)體是“供應(yīng)商”,由此可得查詢條件為“供應(yīng)商名稱=家家悅”,條件實(shí)體=供應(yīng)商。查詢語(yǔ)句為
sllect 供應(yīng)商.電話
from 供應(yīng)商
where 供應(yīng)商.供應(yīng)商名稱=家家悅
在系統(tǒng)的查詢界面上,顯示查詢到的所有電話號(hào)碼。
對(duì)于例句2,經(jīng)過自動(dòng)分詞和生成中間語(yǔ)言,能夠識(shí)別出查詢目標(biāo)有3個(gè),即產(chǎn)品名稱、單價(jià)、庫(kù)存量。該語(yǔ)句中的目標(biāo)實(shí)體為“產(chǎn)品”,查詢條件有2條。
1)產(chǎn)品.單價(jià)gt;面粉,根據(jù)查詢結(jié)果此處的面粉單價(jià)為7.5(元)。
2)供應(yīng)商.省份=河南。
查詢結(jié)果以表格形式顯示,見表2。
在系統(tǒng)功能驗(yàn)證中,共挑選了116條中文語(yǔ)句,該系統(tǒng)可以正確分詞的有107條,正確率為92.2%。觀察發(fā)現(xiàn),該系統(tǒng)對(duì)普通查詢語(yǔ)句的分詞效果,以及對(duì)交集型歧義字段的處理結(jié)果較好。在MQL語(yǔ)句查詢中,查詢到的語(yǔ)句數(shù)量為93條,正確率為80.2%。這時(shí)因?yàn)樵撓到y(tǒng)對(duì)常規(guī)的單表查詢、簡(jiǎn)單嵌套查詢有很好的適用性,而對(duì)于比較復(fù)雜的多層嵌套查詢?nèi)菀壮霈F(xiàn)條件無法識(shí)別的情況。從整體上來看,本文設(shè)計(jì)的數(shù)據(jù)庫(kù)查詢系統(tǒng)基本上能夠滿足大多數(shù)語(yǔ)句的查詢需要,達(dá)到了設(shè)計(jì)預(yù)期。
3" 結(jié)束語(yǔ)
為了更好地滿足數(shù)據(jù)信息的存儲(chǔ)需求,數(shù)據(jù)庫(kù)的容量越來越大,用戶在檢索和查詢數(shù)據(jù)時(shí)需要花費(fèi)的時(shí)間也相應(yīng)的增加,如何從數(shù)據(jù)庫(kù)中更加快速、準(zhǔn)確地提取出用戶需要的信息,成為數(shù)據(jù)庫(kù)設(shè)計(jì)中必須要考慮的問題。本文基于自然語(yǔ)言理解技術(shù)設(shè)計(jì)的數(shù)據(jù)庫(kù)查詢系統(tǒng),可以做到對(duì)查詢語(yǔ)句的自動(dòng)分詞和歧義消除,并通過提取目標(biāo)短語(yǔ)、條件短語(yǔ),以及生成查詢目標(biāo)、查詢條件等方式,可以快速、精確地找到符合要求的語(yǔ)句,并且在系統(tǒng)界面上直觀呈現(xiàn)。從系統(tǒng)功能的初步驗(yàn)證來看,該系統(tǒng)對(duì)自然語(yǔ)句的分詞準(zhǔn)確率和查詢準(zhǔn)確率較高,將會(huì)顯著優(yōu)化數(shù)據(jù)庫(kù)的使用體驗(yàn)。
參考文獻(xiàn):
[1] 趙猛,陳珂,壽黎但,等.基于樹狀模型的復(fù)雜自然語(yǔ)言查詢轉(zhuǎn)SQL技術(shù)研究[J].軟件學(xué)報(bào),2022,33(12):4727-4745.
[2] 潘璇,徐思涵,蔡祥睿,等.基于深度學(xué)習(xí)的數(shù)據(jù)庫(kù)自然語(yǔ)言接口綜述[J].計(jì)算機(jī)研究與發(fā)展,2021,58(9):1925-1950.
[3] 保海軍.基于機(jī)器學(xué)習(xí)的中文數(shù)據(jù)庫(kù)自然語(yǔ)言檢索系統(tǒng)[J].寧夏師范學(xué)院學(xué)報(bào),2021,42(10):82-89.
[4] 袁志祥,任冬冬,洪旭東.結(jié)合數(shù)據(jù)庫(kù)結(jié)構(gòu)及內(nèi)容的問句理解方法研究[J].計(jì)算機(jī)工程,2021,47(3):71-76,82.
[5] 張芃捷.基于自然語(yǔ)言處理的期刊新媒體智能編作交互系統(tǒng)研發(fā)與應(yīng)用[J].中國(guó)傳媒科技,2021(12):146-148.