屬性和defaultUnit屬性(該defaultUnit屬性表示這個字段的內(nèi)部存儲單 位)。如果當(dāng)前字段沒有單位,則該defaultUnit屬性為空。
[0111] 在元數(shù)據(jù)準(zhǔn)備階段,這種由系統(tǒng)自動生成腳本框架,在自動導(dǎo)入的基礎(chǔ)上再由人 工做必要的填充的做法是很有優(yōu)勢的,可以大大節(jié)省時(shí)間、減少錯漏幾率。除了上述元數(shù)據(jù) 的準(zhǔn)備之外,為了使本發(fā)明提供的系統(tǒng)能夠順利工作,還需要導(dǎo)入公共詞典、表達(dá)式規(guī)則、 單位轉(zhuǎn)換系數(shù)表等(導(dǎo)入方式可參考上述舉例說明)。
[0112] 所述的數(shù)據(jù)管理模塊106對圖3所示流程中的步驟S4和S6中涉及的各類詞典及 第一、第二規(guī)則進(jìn)行管理,包括對所述領(lǐng)域詞典、公共詞典、列名詞典、命名實(shí)體識別規(guī)則、 領(lǐng)域規(guī)則、表達(dá)式規(guī)則、中心詞判定規(guī)則等實(shí)現(xiàn)瀏覽、查找、編輯、導(dǎo)出、檢索、匹配等功能。
[0113] 所述的數(shù)據(jù)管理模塊106可讀入各種配置文件,發(fā)現(xiàn)并匯報(bào)配置文件中存在的語 法錯誤,并直接生成相應(yīng)的索引,還可根據(jù)索引重新導(dǎo)出各種配置文件。所述配置文件包 括領(lǐng)域詞典定義文件、公共詞典定義文件、命名實(shí)體規(guī)則定義文件、領(lǐng)域規(guī)則定義文件、列 名詞典定義文件、表達(dá)式規(guī)則定義文件、單位轉(zhuǎn)換系數(shù)定義文件、中心詞判定規(guī)則定義文件 等。
[0114] 所述的數(shù)據(jù)管理模塊106在利用不同的索引對各類詞典或規(guī)則進(jìn)行檢索時(shí)可實(shí) 現(xiàn)模糊匹配功能。例如,允許以代替任意個字符,用"?"代替一個字符,從而滿足特殊 檢索需求。
[0115] 所述的數(shù)據(jù)管理模塊106支持相似匹配功能。例如,假設(shè)領(lǐng)域詞典中存在以"每股 未分配利潤"為術(shù)語的詞條,并且相似匹配的閥值設(shè)置為0. 8,如果輸入"每股未分利潤",因 為輸入與"每股未分配利潤"之間的相似度達(dá)0.923,仍可以得到"每股未分配利潤"作為相 似匹配的結(jié)果。這個特點(diǎn)可以提高對用戶不同輸入習(xí)慣的適應(yīng)性,尤其是適應(yīng)不同的縮略 習(xí)慣,可基于編輯距離或基于頻譜特征實(shí)現(xiàn)所述相似匹配的計(jì)算。
[0116] 所述的索引建立模塊107對上文所述的各類詞典及第一、第二規(guī)則建立相對應(yīng)的 索引(例如領(lǐng)域詞典索引、領(lǐng)域規(guī)則索引、公共詞典索引等),以便于所述數(shù)據(jù)管理模塊106 可快速根據(jù)索引查找到相對應(yīng)的數(shù)據(jù)。
[0117] 此外,針對表達(dá)式規(guī)則,所述的數(shù)據(jù)管理模塊106可進(jìn)一步訪問預(yù)先存儲的單位 轉(zhuǎn)換系數(shù)表,提供對單位轉(zhuǎn)換系數(shù)的瀏覽、查找、編輯、導(dǎo)入、導(dǎo)出、以及檢索功能,并計(jì)算相 應(yīng)的轉(zhuǎn)換系數(shù)。例如,所述的數(shù)據(jù)管理模塊106可輸入源單位查詢對應(yīng)的所有目標(biāo)單位,根 據(jù)用戶輸入的源單位快速查詢到所有以用戶輸入為源單位的目標(biāo)單位及其單位轉(zhuǎn)換系數(shù), 還可輸入目標(biāo)單位查詢對應(yīng)的所有源單位,根據(jù)用戶輸入的目標(biāo)單位快速查詢到所有以用 戶輸入為目標(biāo)單位的源單位及其單位轉(zhuǎn)換系數(shù)。
[0118] 如圖3所示,是本發(fā)明結(jié)構(gòu)化查詢語句生成方法的較佳實(shí)施方式的流程圖。首先, 步驟S2,所述的輸入處理模塊100獲取用戶通過手工或語音輸入的自然語言查詢語句。
[0119] 步驟S4,所述的切詞模塊101利用預(yù)設(shè)的詞典及第一規(guī)則,對所述自然語言查詢 語句進(jìn)行切詞,并得到切詞方案。
[0120] 步驟S6,所述的語義解析模塊102利用預(yù)設(shè)的第二規(guī)則,在所述切詞方案上生成 解析樹。
[0121] 步驟S8,所述的查詢分析模塊103根據(jù)所述解析樹的根節(jié)點(diǎn)生成局部查詢參數(shù), 根據(jù)所述解析樹第一層子節(jié)點(diǎn)生成全局查詢參數(shù),及代入所述解析樹第一層子節(jié)點(diǎn)的全局 查詢參數(shù)并得到所述解析樹的根節(jié)點(diǎn)的全局查詢參數(shù)。在本實(shí)施方式中,在確定了根節(jié)點(diǎn) 的全局查詢參數(shù)后,即可生成語義完整的結(jié)構(gòu)化查詢語句。步驟S8的細(xì)化流程可參考圖4 所示的流程圖。
[0122] 步驟S10,所述的查詢語句生成模塊104根據(jù)所述解析樹的根節(jié)點(diǎn)的全局查詢 參數(shù)生成語義完整的結(jié)構(gòu)化查詢語句,然后,結(jié)束本流程。在本實(shí)施方式中,所述結(jié)構(gòu) 化查詢查詢語句可以是SQL (結(jié)構(gòu)化查詢語言,Structured Query Language)語句或 SPARQL (Simple Protocol and RDF Query Language,是為RDF開發(fā)的一種查詢語言和數(shù)據(jù) 獲取協(xié)議)語句。
[0123] 下文將用三個不同的實(shí)施例詳細(xì)介紹結(jié)構(gòu)化查詢語句的生成過程。
[0124] 如圖4所示,是本發(fā)明結(jié)構(gòu)化查詢語句生成方法中的步驟S8的細(xì)化流程圖。本細(xì) 化流程圖的執(zhí)行主體為所述的查詢分析模塊103。
[0125] 為了便于描述,假設(shè)圖4中涉及解析樹的根節(jié)點(diǎn)對應(yīng)的正文為領(lǐng)域詞條。于步驟 S80,初始化該根節(jié)點(diǎn)的局部查詢參數(shù)(具體實(shí)現(xiàn)方式可參照下文所提供的第一實(shí)施例)。
[0126] 在其他實(shí)施方式中,如果所述解析樹的根節(jié)點(diǎn)對應(yīng)的正文不是領(lǐng)域詞條,那么該 根節(jié)點(diǎn)的局部查詢參數(shù)為空。
[0127] 步驟S81,判斷該根節(jié)點(diǎn)的第一層子節(jié)點(diǎn)是否包括嵌套節(jié)點(diǎn)。若該根節(jié)點(diǎn)的第一 層子節(jié)點(diǎn)不包括嵌套節(jié)點(diǎn),所述的查詢分析模塊103可確定該根節(jié)點(diǎn)的局部查詢參數(shù)就是 全局查詢參數(shù),則直接執(zhí)行步驟S85。若該根節(jié)點(diǎn)的第一層子節(jié)點(diǎn)包括嵌套節(jié)點(diǎn),執(zhí)行步驟 S82〇
[0128] 步驟S82,判斷該根節(jié)點(diǎn)的所有第一層子節(jié)點(diǎn)是否掃描完成。若該根節(jié)點(diǎn)的所有第 一層子節(jié)點(diǎn)已經(jīng)掃描完成,執(zhí)行步驟S83。若該根節(jié)點(diǎn)還有第一層子節(jié)點(diǎn)未掃描完成,執(zhí)行 步驟S84。
[0129] 步驟S83,計(jì)算該根節(jié)點(diǎn)的所有第一層子節(jié)點(diǎn)的全局查詢參數(shù),然后,流程轉(zhuǎn)至步 驟 S85〇
[0130] 步驟S84,將該未被掃描的第一層子節(jié)點(diǎn)視為新的根節(jié)點(diǎn),執(zhí)行遞歸調(diào)用流程,即 返回步驟S80以確定該新的根節(jié)點(diǎn)的全局查詢參數(shù)。其中,具體實(shí)現(xiàn)方式可參照下文第二 實(shí)例中所揭示的方法,將該新的根節(jié)點(diǎn)的全局查詢參數(shù)代入到原始的根節(jié)點(diǎn)的局部查詢參 數(shù)中。
[0131] 需要說明的是,在第一遍執(zhí)行圖4所示流程時(shí),步驟S80、S81、S82、S83中的根節(jié) 點(diǎn)為所述解析樹的原始根節(jié)點(diǎn)(也可理解為該解析樹的第一級根節(jié)點(diǎn)),而在步驟S84執(zhí)行 了遞歸調(diào)用流程(即步驟S84后流程返回了步驟S80)后,則在該遞歸調(diào)用流程的執(zhí)行過程 中,步驟S80、S81、S82、S83中涉及的根節(jié)點(diǎn)即為步驟S84中所確定的新的根節(jié)點(diǎn)及多層子 節(jié)點(diǎn)進(jìn)行層層解析,從而最終得到原始根節(jié)點(diǎn)的全局查詢參數(shù)。
[0132] 在執(zhí)行遞歸調(diào)用流程時(shí),如果該新的根節(jié)點(diǎn)的第一層子節(jié)點(diǎn)中沒有嵌套節(jié)點(diǎn),則 遞歸終止(流程會轉(zhuǎn)至步驟S85),可確定該新的根節(jié)點(diǎn)的局部查詢參數(shù)就是全局查詢參 數(shù)。
[0133] 步驟S85,得到該根節(jié)點(diǎn)的全局查詢參數(shù)。
[0134] 步驟S86,判斷步驟S85的根節(jié)點(diǎn)是否為原始根節(jié)點(diǎn)(參考上文所述內(nèi)容)。若步 驟S85中的根節(jié)點(diǎn)為原始節(jié)點(diǎn),結(jié)束本流程。
[0135] 若步驟S85中的根節(jié)點(diǎn)不是原始根節(jié)點(diǎn),于步驟S87,將步驟S85所得到的全局查 詢參數(shù)代入到上一級節(jié)點(diǎn)(該上一級節(jié)點(diǎn)可以是原始根節(jié)點(diǎn)或者是該原始根節(jié)點(diǎn)下被視 作新的根節(jié)點(diǎn)的一個子節(jié)點(diǎn))的局部查詢參數(shù),然后,流程返回至步驟S85。
[0136] 如圖5所示,是本發(fā)明結(jié)構(gòu)化查詢語句生成方法的較佳實(shí)施方式的表達(dá)式規(guī)則右 部的執(zhí)行流程圖,將對一個表達(dá)式規(guī)則被激活時(shí)執(zhí)行該表達(dá)式規(guī)則右部的流程進(jìn)行舉例說 明。
[0137] 首先,步驟S20,假設(shè)領(lǐng)域詞典中的詞條以及假設(shè)表達(dá)式規(guī)則,例如,假設(shè)在領(lǐng)域詞 典中存在詞條:"總資產(chǎn)" :map = "finance. TA",type = "prop",并假設(shè)存在以下表達(dá)式規(guī) 則:"X,超過,數(shù)量"=>
[0138] about = "X",
[0139] nodes = [STABLE (X)],
[0140] conditions = WMAP(X) > $VAL (數(shù)量)*$UC0E (數(shù)量,$MAP (X)]
[0141] 這個規(guī)則的含義是,如果遇到連續(xù)切詞方案匹配"X,大于,數(shù)量",則執(zhí)行以下操 作:創(chuàng)建一個新節(jié)點(diǎn),并且將新節(jié)點(diǎn)的about參數(shù)設(shè)為"X",在完成上下文函數(shù)計(jì)算后,將該 規(guī)則右部的nodes參數(shù)和conditions參數(shù)分別添加到新節(jié)點(diǎn)的nodes、conditions屬性 中。
[0142] 其中,關(guān)于本實(shí)施例中所使用的上下文函數(shù),簡介如下:"$MAP(X)",MAP是指返回 "X"在領(lǐng)域詞典中的map屬性值,例如如果X為"每股收益"則因其在領(lǐng)域詞典中相應(yīng)詞條 的 map 屬性為 "finance. EPS",該函數(shù)將返回 "finance. EPS" ;
[0143] " $ TABLE(X) "表示返回"X"的關(guān)聯(lián)字段所在的表,同樣取自領(lǐng)域詞典;
[0144] "$VAL (數(shù)量)",VAL是指Value,返回"數(shù)量"的數(shù)值部分,例如"3元"就是一個 "數(shù)量",則$VAL (數(shù)量)的返回值為3;
[0145] "OUCOE(數(shù)量,$MAP ⑴)",UCOE 是指 Unit Coefficiene,即單位系數(shù)。含義為:返 回"數(shù)量"節(jié)點(diǎn)中的單位(例如"元")到"X"的關(guān)聯(lián)字段的默認(rèn)存儲單位的轉(zhuǎn)換系數(shù)。例 如"每股收益"的默認(rèn)存儲單位是"元/股",于是以"元,元/股"查找單位轉(zhuǎn)換系數(shù)表,其 系數(shù)值為1,于是UCOE函數(shù)的返回值將為1。
[0146] 步驟S22,所述的切詞模塊101根據(jù)用戶輸入的自然語言查詢語句生成切詞方案。 假設(shè)輸入的自然語言查詢語句中包含"總資產(chǎn)超過100億元",并且得到包含以下切詞分量 的切詞方案"總資產(chǎn)/fmance. TA,超過/p,100億元/數(shù)量"。其中:"總資產(chǎn)/finance. TA", 是所述切詞模塊101根據(jù)領(lǐng)域詞典的索引判定的,因此以"總資產(chǎn)"對應(yīng)的詞條的map屬性 值"finance. TA"為詞標(biāo);"超過/p"是所述切詞模塊101根據(jù)公共詞典判定的,詞標(biāo)"p"表 示"介詞";"100億元/數(shù)量"是所述切詞模塊101根據(jù)命名實(shí)體識別規(guī)則的索引判定的。 然后,該切詞方案將被提交給所述語義解析模塊102進(jìn)行處理。
[0147] 步驟S24,所述的語義解析模塊102根據(jù)該切詞方案判定表達(dá)式規(guī)則。例如,所述 的語義解析模塊102根據(jù)該切詞方案中的片段"總資產(chǎn)/finance. TA,超過/p,100億元/ 數(shù)量",判定本實(shí)施例假設(shè)的表達(dá)式規(guī)則將被激活:
[0148] "X,超過,數(shù)量"=>
[0149] about = "X",
[0150] nodes = [STABLE (X)],
[0151] conditions = WMAP(X) > $VAL (數(shù)量)*$UC0E (數(shù)量,$MAP (X)]
[0152] 步驟S26,所述的語義解析模塊102創(chuàng)建新的解析節(jié)點(diǎn)(假設(shè)該新的解析節(jié)點(diǎn)是 EXPR)。所述的語義解析模塊102將以"總資產(chǎn)/fmance. TA,超過/p,100億元/數(shù)量"為第 一層子節(jié)點(diǎn)創(chuàng)建一個新的解析節(jié)點(diǎn)EXPR,構(gòu)成一個新的解析樹,并以該新的解析樹替換原 來切詞方案中的分量"總資產(chǎn)/finance. TA,超過/p,100億元/數(shù)量"。
[0153] 步驟S28,所述的語