版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第頁自然語言接口軟件的設(shè)計(jì)與實(shí)現(xiàn)
關(guān)鍵字受限;自然語言;機(jī)器辭典;切詞;SQL語句
1引言
隨著人工智能的發(fā)展和數(shù)據(jù)庫(kù)技術(shù)的廣泛應(yīng)用,人們非常希望以一種更方便的方法去查詢數(shù)據(jù)庫(kù)。使用自然語言開展查詢無疑是解決這一問題的有效方法。它防止了以往命令式人機(jī)界面、圖形式人機(jī)界面繁雜的操作訓(xùn)練。事實(shí)證明,通用的自然語言理解往往是低效的,而作為數(shù)據(jù)庫(kù)人機(jī)接口的自然語言界面具有使用目的單一、用詞范圍有限等特點(diǎn),在數(shù)據(jù)庫(kù)查詢意義上實(shí)現(xiàn)自然語言理解是完全可行的。另外,我們可以通過語音識(shí)別技術(shù)開展語音輸入,從而簡(jiǎn)化復(fù)雜的輸入工作。
本系統(tǒng)針對(duì)數(shù)據(jù)庫(kù)這一單一領(lǐng)域開展查詢,從而簡(jiǎn)化了數(shù)據(jù)庫(kù)查詢的復(fù)雜操作。以提取查詢對(duì)象和查詢條件為手段,生成數(shù)據(jù)庫(kù)查詢語句為目的的軟件。本軟件的人機(jī)交互界面既可以單純的通過輸入語句,然后轉(zhuǎn)換成SQL語句,也可以通過語音輸入,再依靠復(fù)制-粘貼的手段開展輸入,然后轉(zhuǎn)換成SQL語句。
2數(shù)據(jù)辭典的設(shè)計(jì)
2.1辭典構(gòu)造的設(shè)計(jì)
為了便于以后對(duì)機(jī)器辭典開展查找,本系統(tǒng)通過類來設(shè)計(jì)了機(jī)器辭典,具體構(gòu)造如下:
classjqcd//定義一個(gè)反映機(jī)器辭典的jqcd類
{char*ct;//詞條字符串
char*yzym;//標(biāo)志
char*yybz;//語義
char*szb1;//所在表1
char*szb2;//所在表2
char*szb3;//所在表3
}
其中:ct:表示詞條字符串,在切詞時(shí)開展匹配,便于以后生成SQL語句。yzym:表示句法標(biāo)志,用來表示詞條在語句中的功能。
用九個(gè)數(shù)字表示不同的含義,其中:“0”表示域名,“1”表示域值,“2”表示邏輯操作符,“3”表示關(guān)系操作符,“4”表示查詢動(dòng)詞,“5”表示疑問詞,“6”表示連接動(dòng)詞,“7”表示使役動(dòng)詞,“8”表示中性詞。yybz:表示語義標(biāo)志,用來表示詞條所對(duì)應(yīng)的概念在語義框架中的功能。給詞條加上合適的語義標(biāo)志,有助于以后生成SQL語句。語義標(biāo)志比語法標(biāo)志復(fù)雜的多。szb1:表示詞條所在表1,因?yàn)橛行┰~條(如學(xué)號(hào)等)不只在一個(gè)表中,指出所在表有助于以后生成SQL語句。szb2:表示詞條所在表2,因?yàn)橛行┰~條(如學(xué)號(hào)等)不只在一個(gè)表中,指出所在表有助于以后生成SQL語句。szb3:表示詞條所在表3,因?yàn)橛行┰~條(如學(xué)號(hào)等)不只在一個(gè)表中,指出所在表有助于以后生成SQL語句。
2.2辭典的排序
辭典排序采取先按機(jī)內(nèi)碼由小到大,再按詞條長(zhǎng)度由大到小開展排序,通過排序以后,切詞時(shí)可以先通過機(jī)內(nèi)碼找到該詞第一個(gè)字,然后通過最大匹配法開展切詞。
3切詞及其存儲(chǔ)
3.1切詞
切詞采取機(jī)內(nèi)碼匹配,然后通過匹配詞條字符串開展切詞,具體流程如圖1所示。
具體分析如下:首先,讀入句子。然后,按照句子的第一個(gè)字的機(jī)內(nèi)碼與辭典中的詞條第一個(gè)字相匹配,匹配成功則從辭典中順序查找詞條,找到詞條后入棧。如果找不到,則開展容錯(cuò)處理。對(duì)于數(shù)字,我們給他添加特別標(biāo)志,使其在辭典中的位置為“-1”,以后開展分析時(shí),只要遇到位置為“-1”的詞時(shí),就認(rèn)為是數(shù)字。
3.2存儲(chǔ)
切詞完畢,用棧開展存儲(chǔ)中間結(jié)果,棧的構(gòu)造如下:
structsave
{char*savestr;
intindexInDirectory;
structsave*next;
};
其中:savestr存儲(chǔ)切出的詞。indexInDirectory存儲(chǔ)切出的詞在辭典中的位置,便于以后查詢機(jī)器辭典中的詞條。
4中間鏈表的生成
生成中間鏈表的`目的是為了便于以后的語句分析,便于生成查找對(duì)象和查找條件中間鏈表的構(gòu)造如下:
structwTypeList
{charword;//詞條
char*wordType;//詞性
charfield_value;//對(duì)應(yīng)的域值
charfield_name;//對(duì)應(yīng)的域名
intlocationlibrary;//在辭典中的位置
structwTypeList*next;//next指針
};
其中:該中間鏈表中的詞性是關(guān)系到以后生成查詢對(duì)象和查詢條件的關(guān)鍵項(xiàng)。通過詞性的判斷可以提取查詢對(duì)象和查詢條件,以便生成SQL語句。
5查詢對(duì)象的生成
自然語言的查詢語句不外乎是命令性的祈使句、疑問句、條件判斷句,根據(jù)相應(yīng)句型,采用不同搜索方式來確定查詢對(duì)象,本軟件采用三種搜索方式:不需要搜索查詢對(duì)象、需正向搜索查詢對(duì)象、需逆向搜索查詢對(duì)象。
經(jīng)過反復(fù)比較和總結(jié)自然語言查詢語句,共有六種句型:
(1)who—sentence如“誰的學(xué)號(hào)為100033102?”,這種句型的查詢對(duì)象隱含在“誰”中,搜索方式為“不需搜索”。
(2)us—sentence如“哪些學(xué)生的籍貫是**?”
(3)特殊語句:即verbqus不在句子首尾,而可以在其他的任何位置上。如“戴子強(qiáng)是哪個(gè)地方的人?”。以上句型一般采用正向搜索查詢對(duì)象。
(4)findsentence這是以動(dòng)詞開頭的句型,大部分的祈使句的查詢句都是這種句型。如“查詢學(xué)號(hào)為1000033102的學(xué)生的姓名”。
(5)b(把)sentence這是以“把”為首的祈使句。如“把學(xué)號(hào)為1000033102的學(xué)生找出來”。
(6)sentence--verb—qus(who)這種句型是以verbqus或verbwho結(jié)尾的句子,如“張三的學(xué)號(hào)是多少?”
(4)(5)(6)三種句型采取逆向搜索查詢對(duì)象。以上六種句型,其覆蓋的查詢句子已相當(dāng)廣泛,所以當(dāng)句型和搜索方式確定以后,就可以找出查詢對(duì)象。查詢對(duì)象的搜索規(guī)則滲透到程序中,采取的方法是一邊搜索中間詞鏈,一邊根據(jù)句型搜索查詢對(duì)象。
6查詢條件的生成
首先,根據(jù)前面生成的中間詞鏈,在通過查詢對(duì)象尋找的程序后用一個(gè)指針從中間詞鏈的頭移動(dòng)到尾,分別判斷當(dāng)前指針指向的結(jié)點(diǎn)的詞性是不是為“-1”、“8”、“4”,即為查詢對(duì)象、查詢動(dòng)詞、中性詞、一般動(dòng)詞。如果是,指針后移;如果不是,則復(fù)制該結(jié)點(diǎn),然后執(zhí)行插入查詢條件詞鏈中的程序。這樣指針移動(dòng)到頭后,所生成的查詢條件鏈就是下一步程序所要的詞鏈。若中間詞鏈的頭指針和首結(jié)點(diǎn)相等的話,即中間詞鏈為空,則直接返回查詢條件棧的頭指針。
其次,根據(jù)七種基本模版:(1)域名+關(guān)系符+域值(2)域名+關(guān)系符(3)域名+域值(4)域值(5)域值+域名+關(guān)系符(6)域值+域名(7)關(guān)系符+域名開展匹配。一個(gè)查詢條件鏈可以有一個(gè)或多個(gè)模版組成。
最后,將匹配成功的一個(gè)或多個(gè)模版分別壓入條件棧,返回入棧后的棧頂指針。在沒有找到匹配的模版或條件鏈為空時(shí),直接返回沒有結(jié)點(diǎn)的條件棧的棧頂指針。
查詢條件棧的構(gòu)造為:
structcondStack//查詢條件棧
{char*name;//域名
intnameIndex;//域名在字典中的位置
char*condition;//關(guān)系(邏輯或者一般關(guān)系)
char*value;//域值
intvalueIndex;//域值在字典中的位置
structcondStack*next;
};
7SQL語句的生成
根據(jù)前面生成的查詢對(duì)象棧和查詢條件棧,開展SQL語句的轉(zhuǎn)換。
首先,判斷對(duì)象棧和條件棧是否為空。如果這兩個(gè)棧有一個(gè)為空,則SQL轉(zhuǎn)化沒有方法執(zhí)行,直接返回空。
其次,分別將對(duì)象棧和條件棧中的結(jié)點(diǎn)做出棧處理。并分別記下查詢對(duì)象和條件的個(gè)數(shù),并判斷該查詢語句屬于哪一種情況:(1)單對(duì)象,單條件(2)單對(duì)象,多條件(3)多對(duì)象,但條件(4)多對(duì)象,多條件。
然后,根據(jù)屬于哪一種情況,來開展對(duì)漢語查詢語句的SQL轉(zhuǎn)換。但是,不管查詢語句屬于哪一種情況,都要開展判斷查詢對(duì)象和查詢條件是否在同一個(gè)表中。這是通過szb()函數(shù)和OneOrMoreTable()函數(shù)結(jié)合來實(shí)現(xiàn)的。
在單對(duì)象,單條件中,如果查詢對(duì)象和條件在同一表中,則直接調(diào)用函數(shù)one()來執(zhí)行SQL語句的轉(zhuǎn)化。在one()函數(shù)中,將select、from、where等SQL語句中必要的單詞轉(zhuǎn)換成字符串,將查詢對(duì)象和查詢條件根據(jù)他們能在SQL中的位置開展轉(zhuǎn)換。當(dāng)查詢對(duì)象和查詢條件不在同一個(gè)表中,此時(shí)就是一個(gè)嵌套查詢的語句。根據(jù)提供的9個(gè)表,找出查詢對(duì)象和查詢條件分別所在表之間的聯(lián)系。因這9個(gè)表之間都是通過什么號(hào)(例如:學(xué)號(hào)、院系號(hào))開展聯(lián)系的,所以最后在多表問題上通過表之間的聯(lián)系并調(diào)用more()函數(shù)來開展SQL語句的轉(zhuǎn)換。
在單對(duì)象,多條件情況中,先判斷條件是否在同一個(gè)表中,然后在分別判斷多條件和單個(gè)對(duì)象是否在同一個(gè)表中。這樣就又會(huì)出現(xiàn)多條件在同一個(gè)表中,與單對(duì)象在同一個(gè)表中,與單對(duì)象不再同一個(gè)表中;多條件不在同一個(gè)表中,單條件與單對(duì)象在同一個(gè)表中,單條件與對(duì)象不再同一個(gè)表中等多種情況。分別對(duì)這些情況開展判斷和分析,最后都將它們轉(zhuǎn)換成簡(jiǎn)單的單對(duì)象單條件的情況開展處理。對(duì)于實(shí)在沒有方法處理的句子情況
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中專助產(chǎn)畢業(yè)個(gè)人總結(jié)(11篇)
- 2024年度數(shù)據(jù)中心建設(shè)安裝工程分包合同
- 七一二:天津七一二通信廣播股份有限公司2021年年度報(bào)告摘要
- 前臺(tái)年終總結(jié)開頭范本(3篇)
- 2024年血液凈化信息系統(tǒng)項(xiàng)目綜合評(píng)估報(bào)告
- 2024年文化活動(dòng)中心管理承包協(xié)議
- 2024年戶外護(hù)欄安裝合同
- 2024年文化旅游項(xiàng)目投資與股權(quán)轉(zhuǎn)讓合同
- 2024年影樓客戶資料保密協(xié)議
- 節(jié)約用電主題班會(huì)教案(合集8篇)
- 蔬菜出口基地備案管理課件
- 子宮異常出血的護(hù)理
- 高考英語單詞3500記憶短文40篇
- 《耳穴療法治療失眠》課件
- 詢盤分析及回復(fù)
- 氯化工藝安全培訓(xùn)課件
- 指導(dǎo)巡察工作精細(xì)科學(xué)
- 企業(yè)法律知識(shí)培訓(xùn)消費(fèi)者權(quán)益保護(hù)實(shí)務(wù)
- 快樂讀書吧-讀后分享課:《十萬個(gè)為什么》教學(xué)案列
- 2024年 貴州茅臺(tái)酒股份有限公司招聘筆試參考題庫(kù)含答案解析
- 河上建壩糾紛可行性方案
評(píng)論
0/150
提交評(píng)論