• 沒有找到結果。

關聯式資料庫之關鍵字查詢處理技術

N/A
N/A
Protected

Academic year: 2021

Share "關聯式資料庫之關鍵字查詢處理技術"

Copied!
76
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文. 指導教授:. 柯佳伶. 博士. 關聯式資料庫之關鍵字查詢處理技術 The Query Processing Techniques for Keyword Search in Relational Database. 研究生: 中華民國. 劉爾剛. 一百零二. 撰. 年 七 月.

(2) 摘要. 關聯式資料庫之關鍵字查詢處理技術 劉爾剛. 當今在網際網路中最普遍的搜尋資訊方式,是使用網路搜尋引擎,給予關鍵 字進行查詢。我們希望讓使用者能以接近操作搜尋引擎的查詢方式,給定關鍵字 和條件式對於關聯式資料庫內容進行查詢,增加資料庫使用的普及和可用性。本 論文之研究目的是對關聯式資料庫提出關鍵字查詢處理技術,能將使用者查詢自 動轉換成一個對應的結構化查詢語言的 SQL 語句,並能符合使用者的搜尋意圖。 關鍵字查詢處理技術是將查詢關鍵字進行拆解,拆解成一至多個查詢條件並且分 組。接著透過給定設計查詢條件單位以邏輯運算子組合運算的優先順序指定括弧 位置,產生最可能表達使用者給予關鍵字查詢的搜尋意圖的條件組合。在決定了 查詢條件和邏輯順序組合後,接著轉換成所對應的 SQL 查詢語句,並且執行於關 聯式資料庫。此外,本系統還會依統計觀點分析查詢結果中欄位值的一致性和分 佈變化差異進行結果摘要。實驗結果顯示本研究方法之關鍵字查詢處理技術在多 數情況下能正確處理單一屬性值、資料型態和屬性值組合、數值條件式的查詢。 而所提出的摘要方法也有助於使用者得知隱含在查詢結果的重要資訊。. 關鍵字: 關聯式資料庫、關鍵字查詢、查詢拆解、條件組合、查詢結果摘要.

(3) Abstract The Query Processing Techniques for Keyword Search in Relational Database by Er-Gang Liu By giving keywords to a search engine on Internet is the most popular way of searching information. In order to improve the popularity and availability of relational database, we would like to provide that users can give a query consisting of only keywords and predicates for database to find the required data from the database, which is similar to the way of giving queries on search engines. Accordingly, in this thesis, we propose the query processing techniques for keyword search in relational databases, which can automatically transform a user's keyword query into the corresponding Structured Query Language (SQL) statement according to the query intent of the user implied by the keyword query. The proposed query processing techniques firstly separate the query into multiple predicate units and perform grouping on these units. By defining the priority of query predicates and the combination of logical operations, the parentheses are assigned to the predicates to generate the combination of the predicates which most possibly represents the query intent of the given keyword query. After generating the combination of the predicates, the query is then transformed into the corresponding SQL query and performed on a relational database. Besides, the system can statistically analysis the query results according to the consistency and the distribution of differences on attribute values to provide a summary of the results. The experimental results show that the proposed query processing techniques for keyword search can correctly deal with queries consisting of attribute value, combined with keywords of data types and conditional value expression in most cases. Besides, the provided result summary can help users find the important information which is implicit in the query results.. Keywords: relational database, keyword search, query segmentation, condition combination, result summary.

(4) 誌謝 能順利完成這份研究,首先要感謝我的指導教授─柯佳伶老師。從碩一專業 領域知識的培養,到碩二進入研究討論的過程,以及平常時的照顧。老師所教會 我、指導我的不僅在於研究的專業領域上,也受用於日常生活及職場。而在口試 前的論文撰寫和報告練習,老師非常辛苦、耐心的逐字批改和提出很多建議及鼓 勵。這指導與幫助的過程,非常謝謝老師對我們每一位學生的用心。 也感謝吳宜鴻教授與徐嘉連教授除了擔任口試委員外,還在口試前仔細地閱 讀論文,及口試時的討論,給了我在書面、報告呈現、研究內容上的建議,對我 有非常大的幫助,也讓這份研究更完善。 非常有緣份地在這個研究室能當兩年的同學-奕智、俊嘉,在課業上我們一起 修課、互相討論、交換心得,在日常生活中一起活動、閒聊。以及在第二年也加 入一起奮鬥行列的柏先學長,在碩士班第二年這些努力的過程,都是我們共同的 回憶和資產。也非常感謝第一年給予我們許多意見和經驗的昇宏、光庭學長,讓 我們在碩士班第一年就能快速融入環境和進入狀況,也建立深厚的感情,讓這個 研究室很棒的氣氛,我們得以傳承下去。還有舜宸、楨喻、懿萱學妹們,這一年 的相處很融洽,而且在 Meeting 的過程,一起討論、交換意見,論文實驗上的幫 忙、建議。還有很感謝幫我們處理口試前的瑣碎相關事宜,讓我們能只要專注在 口試上。 最後感謝以前的同學、朋友們都會適時關心我在碩士班的狀況,給我一些意 見和鼓勵。以及我的家人們,從鼓勵我唸碩士班,到碩士班這兩年期間,給我無 條件的支持與包容,讓我能無後顧之憂、全心全意地實行自己想做的事。也到場 陪伴我參加人生過程中其中一場重要的畢業典禮,一起分享我的喜悅。 劉爾剛. 謹識. 於國立臺灣師範大學資訊工程研究所 2013 年 8 月.

(5) 目錄 附表目錄........................................................................................................................ iii 附圖目錄........................................................................................................................ iv 第一章 1.1 1.2 1.3 1.4. 緒論................................................................................................................. 1 研究動機與目的.............................................................................................. 1 研究的範圍與限制.......................................................................................... 2 論文方法.......................................................................................................... 3 論文架構.......................................................................................................... 4. 第二章 2.1 2.2 2.3. 文獻探討......................................................................................................... 5 結構性資料之查詢關鍵字處理...................................................................... 5 候選結果產生及排名技術............................................................................ 10 搜尋結果彙整分析及呈現方式.................................................................... 12. 第三章. 系統處理流程............................................................................................... 15. 第四章 查詢拆解與條件組合................................................................................... 17 4.1 資料庫資料前處理與索引建立.................................................................... 17 4.1.1 資料庫資料前處理 .................................................................................... 17 4.1.2 索引建立 ..................................................................................................... 18 4.2 查詢關鍵字分解............................................................................................ 20 4.2.1 查詢字前處理 ............................................................................................. 20 4.2.2 查詢字拆解 ................................................................................................. 22 4.3 條件組合........................................................................................................ 23 第五章 SQL 查詢語句產生與查詢結果摘要.......................................................... 30 5.1 SQL 查詢語句產生 ....................................................................................... 30 5.1.1 資料表鍵結關係......................................................................................... 30 5.1.2 SQL 語句產生 ............................................................................................ 33 5.2 SQL 執行結果摘要 ....................................................................................... 35 第六章 實驗結果與討論........................................................................................... 41 6.1 實驗資料來源及環境設定............................................................................ 41 6.1.1 實驗資料來源 ............................................................................................. 41 6.1.2 實驗環境 ..................................................................................................... 43 6.2 查詢關鍵字轉換成 SQL 查詢語句正確性評估 .......................................... 44 6.2.1 實驗方法 ..................................................................................................... 44 6.2.2 實驗結果及分析探討 ................................................................................ 48 i.

(6) 6.3 SQL 查詢結果的重要資料摘要效果之評估 ............................................... 58 6.3.1 實驗方法 ..................................................................................................... 58 6.3.2 實驗結果及分析探討 ................................................................................ 59 第七章 結論與未來研究方向................................................................................... 63 7.1 結論................................................................................................................ 63 7.2 未來研究方向................................................................................................ 63 參考文獻....................................................................................................................... 65 附錄 A 查詢控制型實驗搜尋意圖描述 ................................................................... 68. ii.

(7) 附表目錄 表 4.1 倒置索引資料庫內容範例................................................................................ 19 表 4.2 倒置索引資料庫綱要資訊範例........................................................................ 19 表 4.3 字詞所屬類別範例............................................................................................ 21 表 4.4 查詢字相關資訊記錄範例................................................................................ 21 表 4.5 查詢條件單位(Predicate Unit)的格式範例 ...................................................... 22 表 4.6 查詢關鍵字屬性欄位順序性範例.................................................................... 24 表 4.7 查詢條件單位之重複屬性範例........................................................................ 24 表 4.8 查詢條件單位之重複屬性樣式範例................................................................ 25 表 4.9 查詢條件單位對應在同一屬性範例................................................................ 26 表 4.10 查詢條件單位對應之資料表間鍵結距離範例.............................................. 27 表 4.11 查詢條件單位為同一階層依邏輯運算子優先順序範例 .............................. 28 表 4.12 查詢條件單位為同一階層且邏輯運算符號相同範例.................................. 28 表 5.1 查詢關鍵字中有僅為屬性名稱範例................................................................ 33 表 5.2 SQL 查詢執行後查詢結果之範例 ................................................................... 37 表 5.3 查詢結果之各個欄位亂度值結果範例............................................................ 37 表 6.1 機器軟硬體規格及開發環境............................................................................ 43 表 6.2 給予查詢意圖得知關鍵字查詢問卷範例........................................................ 45 表 6.3 使用者根據搜尋意圖描述給予查詢關鍵字之範例........................................ 45 表 6.4 關鍵字查詢問卷範例........................................................................................ 46 表 6.5 任意給予關鍵字查詢及提供查詢意圖之問卷結果範例................................ 47 表 6.6 查詢關鍵字長度類別........................................................................................ 54 表 6.7 IMDB 各個查詢長度轉換 SQL 查詢語句正確率........................................... 55 表 6.8 DBLP 各個查詢長度轉換 SQL 查詢語句正確率 ........................................... 55 表 6.9IMDB 和 DBLP 摘要一致性效果評估整體平均分數 ..................................... 59 表 6.10 IMDB 和 DBLP 摘要分佈變化差異效果評估整體平均分數 ...................... 61. iii.

(8) 附圖目錄 圖 3.1 系統流程圖........................................................................................................ 15 圖 4.1 資料庫綱目之資料表名稱和資料表欄位名稱內容範例................................ 18 圖 4.2 資料庫中屬性值內容範例................................................................................ 18 圖 4.3 離線處理和檢索元件架構圖............................................................................ 20 圖 5.1 資料庫綱目依據圖形表示範例........................................................................ 32 圖 5.2 產生的 SQL 查詢語句結果範例 ...................................................................... 34 圖 5.3 欄位 Note 及各屬性值在查詢結果和資料庫分佈示意圖之範例 .................. 39 圖 5.4 欄位 Year 及各屬性值在查詢結果和資料庫分佈示意圖之範例 .................. 40 圖 6.1 IMDB 資料庫綱目(Database Schema) ............................................................. 42 圖 6.2 DBLP 資料庫綱目(Database Schema) ............................................................. 43 圖 6.3 輸入格式說明及參考資訊................................................................................ 47 圖 6.4 查詢控制型實驗轉換 SQL 查詢語句正確率 .................................................. 49 圖 6.5 查詢未控制型實驗轉換 SQL 查詢語句正確率 .............................................. 51 圖 6.6IMDB 和 DBLP 資料庫對於各種型態查詢轉換 SQL 查詢語句正確率 ....... 55 圖 6.7IMDB 各個摘要一致性效果評估結果 ............................................................. 59 圖 6.8 DBLP 各個摘要一致性效果評估結果 ............................................................ 60 圖 6.9 IMDB 各個摘要分佈變化差異效果評估結果 ................................................ 61 圖 6.10 DBLP 各個摘要分佈變化差異效果評估結果 .............................................. 62. iv.

(9) 第一章 緒論 1.1 研究動機與目的 當今在網際網路中最普遍的搜尋資訊方式,是使用網路搜尋引擎,例如: Google 、Yahoo 、Bing,給予關鍵字進行查詢。關鍵字查詢(Keyword Search)是 指使用者可輸入一些關鍵字代表自己的搜尋意圖,而搜尋引擎會比對關鍵字和資 料物件中的文字,再將包含關鍵字的資料物件回傳給使用者。搜尋引擎的資料, 大多是屬於文字文件(Text Document),也稱為非結構化資料。 近年來關聯式資料庫,例如:Microsoft SQL Server、Oracle、MySQL 等已被 廣泛地使用來儲存管理資料。論文[13]提出「資料庫的實用性、普及性,最重要 在於所提供的功能」。不同於文字文件,在資料庫裡的資料屬於結構化資料,受 限於資料庫結構上的本質,目前對關聯式資料庫進行資料的查詢,需要透過給定 結構化查詢語言 SQL 進行查詢。由於 SQL 語言並非一般使用者能夠給定,因此 對於資料庫資料進行查詢,必須透過資料庫應用程式設計師先行設計好的下拉式 選單介面,選取固定的欄位指定查詢條件,系統再將各個條件做邏輯運算 AND 起來轉成 SQL 查詢。這些提供查詢的欄位在程式設計時便預先決定,使用者查詢 方式不能像採用搜尋引擎的方式,隨意輸入表格欄位名稱或條件關鍵字進行查詢, 因而限制了一般使用者對於資料的查詢方式。若關聯式資料庫能提供使用者如同 使用搜尋引擎的查詢方式,也就是給定關鍵字查詢,系統再將使用者給定之關鍵 1.

(10) 字查詢自動產生出 SQL 結構化查詢語言之查詢語句,對資料庫進行資料查詢,將 可以提供使用者指定查詢條件更大的彈性。不過在一般搜尋引擎的操作方法,系 統是將所輸入的每一個查詢關鍵字,都與資料文件做字串比對。而對於關聯式資 料庫資料,有數值類型的資料。若將有些數值條件式(例如:year>2000)都當成查 詢關鍵字做字串比對並不適合。所以我們希望在對於關聯式資料庫查詢的查詢格 式上,除了查詢關鍵字外,還能提供像是數值條件式(例如:year>2000)這種輸入 格式。 因此本論文的研究目的是對關聯式資料庫,探討如何將以關鍵字和數值條件 式描述的查詢,自動轉換成一個對應的結構化查詢語言的 SQL 語句,並能符合使 用者的搜尋意圖。除此之外,由於使用者對資料庫裡的資料內容瞭解有限,我們 也將探討如何將對應 SQL 查詢的執行結果,以統計的觀點選取適當欄位提供查詢 結果中重要結果的摘要,幫助使用者得到與查詢結果相關的重要資訊。. 1.2 研究的範圍與限制 本論文所考慮的底層資料庫是關聯式資料庫,資料庫儲存資料限定於英文資 料;而資料庫綱目(Schema)的命名,假設皆為具有意義的英文字彙。在資料庫綱 目設計上,研究的前提是資料庫綱要採用第一正規化(First Normal Form),是資料 庫正規化中的其中一種形式,其規則是滿足「每個欄位只能含有一個屬性值」條 件。其目的是要排除重複資料的出現,每個欄位都只能存放單一種類值。而在使 2.

(11) 用者輸入查詢關鍵字的準則上,查詢輸入格式除了提供關鍵字為查詢條件之外, 還提供欄位、運算子及常數組合成條件式(例如:year > 2012),並能 And 或 Or 等 邏輯運算子對查詢條件進行組合。 查詢所轉換出的 SQL 結構化查詢語言,本論文只考慮基本資料庫查詢條件句 型,其中 SELECT 子句,描述取得哪些的欄位資料;FROM 子句,描述資料從資 料庫的哪些資料表取得;WHERE 子句,表示資料所要符合的條件。在此不考慮 聚合函數(aggregation functions),例如:Avg、 Count、Min、Max 等,以及巢狀式 子查詢(nested subqueries)等較複雜的 SQL 查詢。 本論文研究重點在於提出一個處理流程及策略,能將使用者給予的查詢關鍵 字和數值條件式自動進行拆解、分析。將拆解出來的查詢條件,組合出使用者想 表達的搜尋意圖,進而轉換成結構化查詢語言的查詢格式。最後並提出對 SQL 查詢結果的重要資料摘要呈現的方法。. 1.3 論文方法 為了達到前述目的,本論文提出對關聯式資料庫進行關鍵字查詢的處理過程 主要分成兩大步驟:在第一步驟,系統會將使用者所給定的查詢關鍵字進行查詢 拆解 (Query Segmentation),先將每一個關鍵字以特性個別標記,再進行分組,建 立關鍵字所代表各項搜尋意圖之查詢條件。第二步驟,將上個步驟找出的各個查 詢條件,進行條件組合(Condition Combination),再產生對應 SQL 查詢語句(SQL 3.

(12) Query Generation)。在各個查詢條件組合中,透過設計查詢條件單位以邏輯運算 子組合運算的優先順序指定括弧位置,產生最可能表達使用者給予關鍵字查詢的 搜尋意圖的條件組合。最後再將條件組合的結果,轉換成結構化查詢語言描述, 且送至關聯式資料庫進行查詢。而由 SQL 查詢的執行回傳結果,系統會依統計觀 點 分 析 查 詢 結 果 中 欄 位 值 的 一 致 性 和 分 佈 變 化 差 異 進 行 結 果 摘 要 (Result Summary)。. 1.4 論文架構 本論文以下章節內容簡介如下:第二章說明相關文獻探討,第三章介紹系統 處理流程,第四章詳述查詢關鍵字拆解以及條件組合的處理方法,第五章說明完 成 SQL 查詢語句及查詢結果摘要之方法,第六章顯示實驗結果與討論,最後在第 七章總結本論文並提出未來研究方向。. 4.

(13) 第二章 文獻探討 近年有許多研究針對如何對結構性資料提供關鍵字查詢進行研究,以下我們 將依序介紹與本論文相關的研究,依照處理過程的相關技術,可分為結構性資料 之查詢關鍵字處理、候選結果產生及排名技術、搜尋結果彙整分析及呈現方式三 部份. 2.1 結構性資料之查詢關鍵字處理 在結構性資料上進行關鍵字查詢,使用者所給定的關鍵字中不一定有提供資 料型態的查詢指定,所以必須考慮該如何從僅有的查詢關鍵字去轉換成結構化查 詢。而且查詢關鍵字容易有搜尋意圖表達不清,或是查詢關鍵字有一字多義等情 況,以上都是查詢關鍵字會有結構或是語意上的問題。關鍵字查詢於結構性資料 的處理過程中,首先會對給定的查詢關鍵字做意圖分析及語意解釋,不論是藉由 事先設定好的輸入格式,讓輸入範圍縮小並且得到更多可能的搜尋意圖當作判斷 依據;或是利用外部資源及結構性資料具有描述資料屬性資訊特性的資料(meta data),都是對查詢關鍵字進行意圖分析及語意解釋的方法,以下對結構性資料之 查詢關鍵字處理技術進行介紹。. 5.

(14) <1> 查詢關鍵字分群 由於關聯式資料庫包含的資料內容,有隸屬資料庫綱目的資料表名稱、屬性 名稱,以及表示資料實際內容的屬性值兩種。若對關聯式資料庫使用關鍵字查詢, 使用者輸入的查詢關鍵字中,可分為直接或間接隱含著所要找的資料型態,或是 所要查詢的相關內容屬性值兩大類。論文[14]探討的範圍是以企業資料庫做為資 料集,使用者給予查詢關鍵字進行查詢。該論文認為使用者在給予查詢關鍵字, 表示所需要的資料需求時,可分為兩種:一類是類型需求(Type Requirement);另 一種是內容需求(Content Requirement)。例如:關鍵字查詢給予 Q = { John Smith contact information },其目的是要找出 John Smith 該人的聯絡資訊,而其中人名: “John Smith”代表內容需求,而聯絡資訊:“contact information”為類型需求。 由於企業資料同時具有非結構性資料和結構性資料兩種資料格式的特性,[14]利 用非結構性的資料當作外部參考資源,輔助進行查詢關鍵字的分群處理。一開始 將每一個關鍵字視為獨立一個群集,在每個群集之間,兩兩計算其相似程度值。 相似度最高的兩個群集,再合併成一個群集,合併終止條件為群集只剩下兩個群 集。這兩群集再分別與資料庫綱目內容的文件計算相似程度,與資料庫綱目內容 相似度較高的群集裡的關鍵字就認定為類型需求,而另一群集裡的關鍵字,就視 為內容需求。. <2> 查詢關鍵字拆解 有別於提供關鍵字查詢,論文[17]提出一個 STRUCT 系統,對於使用者進行 6.

(15) 資料庫查詢所設定的輸入格式限定為一句英文完整句子。該論文認為,一句英文 句子中包含多個搜尋條件,可拆解成多個子查詢(Sub-query)。英文句子具有英文 文法之特性,可藉由自然語言處理技術,透過一些特殊詞性的字詞,例如介係詞、 關係代名詞、連結詞等,作為分割依據。此篇論文著重在句子的拆解,從一個句 子拆解成多個子查詢,以反應使用者所指定的查詢條件及所要顯示欄位資訊。而 將多個子查詢轉換成各個查詢條件時,該論文利用詞庫和事先建立的索引結構, 找出該字詞是否有同義字,以及該字詞為屬性名稱或是屬性值,產出一種括弧式 查詢格式。再利用其提出的分組演算法(Grouping Algorithm),對各括弧進行邏輯 組合,最後轉換成對應的結構化查詢語言 SQL 語句找出結果。. <3> 根據資料庫綱目輔助找出關鍵字查詢語意 關聯式資料庫的綱目(Schema)可用一個圖形表示,稱為綱目圖形(schema graph)。圖形中一個節點(node)代表資料庫的一個資料表(Relation),一條邊(Edge) 代表資料表和資料表之間的連結關係,當一個資料表的主鍵(primary key),被設 為另一個資料表欄位參考外來鍵(foreign key),則兩資料表的對應節點之間建立一 個邊連結。而邊具有方向性,方向決定是由被參考資料表節點指向參考資料表節 點。由於相同的關鍵字,可能在不同的資料表出現,對於這個關鍵字而言,在不 同的資料表裡,就有不同的解釋意思。例如當關鍵字查詢給予 Q = {Markov SIGIR}。一種解釋是:一篇作者為“Markov”的論文被引用在另一篇“SIGIR” 研討會所發表文章。另一個解釋是:一篇發表於 SIGIR 研討會的論文標題中包含 7.

(16) “Markov”。論文[20]提出一個系統 iSearch,透過資料庫綱目及資料內容查出查 詢關鍵字可能的意義,並將其組合出整個查詢字可能解釋情形。該論文為了找出 關鍵字所有可能代表的含意,從符合關鍵字對應的資料表,找出資料表和資料表 間所有可能的連結路徑,而每一條路徑即代表著一種對查詢字語意的解釋。這些 語意解釋依所訂定的評分方式進行排名,在讓使用者進行確認點選。最後再轉換 成 SQL 查詢語句對關聯式資料庫進行查詢。. <4> 根據外部資源輔助找出關鍵字隱含語意 使用關鍵字查詢在於結構性資料上,由於使用者進行關鍵字查詢時,所給予 的關鍵字數量並不多,單就查詢字能參考的資訊有限,而容易產生語意不清楚的 問 題 。 需 透 過 外 部 參 考 資 源 作 為 解 釋 語 意 的 參 考 依 據 。 論 文 [8] 提 出 一 個 DBSemSXplorer 系統,系統在處理關鍵字查詢的,過程不僅比對文字內容是否相 同,還考慮到的同義字詞和一字多義的情況。有些關鍵字雖然與資料庫資料字詞 比對相同,但其實並不是使用者真正的搜尋意圖。例如:關鍵字查詢給予 Q = {Movie directed starred George Clooney},其目的是要找出 George Clooney 所擔任 導演且兼演員的電影。若單純用 star 字詞去找,找不出同義字 Actor 演員這個屬 性欄位,反而找出跟 star 星星有關的電影。該論文處理方式,先將關聯式資料庫 資料都轉換成 RDF 格式,將資料語意關係先行建立好。關鍵字先藉由字串比對以 及同義詞關係(使用字典 WordNet),找出符合在 RDF 上對應到的候選節點。這個 策略就不單只是考量相同字串比對,還加上同義字詞的語意考量。 8.

(17) 論文[18]透過網路知識庫和查詢記錄檔(Query Log)作為外部參考資源,提出 對於關鍵字查詢中解釋關鍵字語意的方法。例如:關鍵字查詢給予 Q = {songs by jimi hendrix}。單從關鍵字字面上,可能有多種解釋對於這個關鍵字。像是解釋為 Jimi Hendrix 所創作過的歌曲,或歌曲名稱稱 Jimi Hendrix 的歌。該論文利用搜 尋引擎的歷史記錄檔作為訓練資料(Training Data),利用詞性和詞性樣式(pattern) 去學習出語法結構,例如:(“song”: type , “by”:rel , “jimi hendrix” : ent),表示關鍵 字 song 對應到的是型態,by 對應到的是一種關係,而關鍵字 jimi hendrix 對應到 的是個體。從查詢關鍵字和其相關語意結構上的關係,再去知識庫對應到 by 是 指的 Created By。最後查詢關鍵字確定解釋為具有 Jimi Hendrix 與歌曲的關聯, 就能明確解釋該關鍵字查詢所代表的意思為 Jimi Hendrix 所創作過的歌曲。 總結上述結構性資料之查詢關鍵字處理之相關研究,由於單從關鍵字或資料 庫內部資料,都難以直接地解釋查詢關鍵字語意。要解決查詢關鍵字語意問題, 多數研究都是使用外部參考資源、查詢記錄檔或資料庫綱目作為參考依據。另外 在關鍵字之查詢意圖分析方法中,論文[14]的方法受限於該資料集必須具有對應 的非結構性資料當作外部參考資源。若非如此則需找到其他替代的相關外部參考 資源,才能進行關鍵字需求上的判別。而論文[17]考慮之查詢為自然語言查詢句, 但所輸入格式要求為嚴謹且完整的英文句子,但對於使用者進行查詢而言,若要 求其輸入的格式過於嚴謹或受限於特定的句型,則失去關鍵字之查詢的自由性而 較不容易使用。而本研究希望能打破此限制,希望能以接近關鍵字查詢的方式對 9.

(18) 關聯式資料庫進行查詢。. 2.2 候選結果產生及排名技術 在關聯式資料庫之關鍵字查詢處理過程中,對於查詢關鍵字產生候選結果及 查詢結果排名有相當多的研究。在產生候選結果的研究,很多方法都是將關聯式 資料庫轉換成圖形結構作為前提,使用圖形演算法進行處理,找出符合查詢關鍵 字的候選圖形結果。而另一部份研究著重於將找出的查詢結果,設計評分機制進 行排名。以下對候選結果產生及排名技術的相關文獻進行介紹。. <1> 找出符合查詢字之候選結果 論文[19]提出資料和資料間的連結關係結構,例如關聯式資料庫、可擴展標 記語言(XML)、網站之間連結關係,都可以轉換成有向圖形來表示。這種圖形結 構的資料形式,可被用來輔助進行關鍵字查詢的處理。而論文[13]定義資料轉換 成圖形結構的方式,是將一筆資料(Tuple)代表圖形裡面節點(node),一個邊(edge) 代表兩筆資料間有外來鍵(Foreign Key)的關係。而節點和邊分別都有自己的權重 值,代表節點和邊的重要性。 論文[9]提出列舉候選答案的方法,先將每一個給定的查詢關鍵字,找出有包 含關鍵字的所有節點,從符合的節點中挑出兩點,將節點和節點之間連接起來, 這些連結的路徑就形成各個候選答案。該論文除了使用最短路徑找出節點和節點 10.

(19) 之間的連結,也採用找出最小樹高之圖形,找到符合查詢關鍵字的候選路徑圖 形。. <2> 候選結果排名方法 論文[1][2][11]是早期提出關聯資料庫關鍵字搜尋的研究,該三篇論文都是使 用資料庫綱目的資訊作為語意解釋參考,所回傳的排名結果,是使用廣度優先 (Breadth-first)搜尋資料庫綱目,列舉所有可能候選答案,而這每一個候選答案的 節點都必須包含所有查詢關鍵字。在該三篇論文的候選結果分數排名都使用大略 估算的策略,去產生 Top-k 的排名。不過在搜尋過程中只有查詢關鍵字和資料字 詞上完全比對,並沒有考量使用者所給予的查詢關鍵字中,可能還有不同語意解 釋的部份。 論文[16]提出使用語言模型(Language Model)來進行候選結果之評分,假設候 選圖形結果都已經挑選出來,評分的重點在於兩個考量,(1)圖形結果本身結構, 圖形上的節點和邊會給予權重值,這些權重值若只從語意上考慮,是與資料庫本 身的圖形結構有關,不會因為查詢字不同而改變。(2)查詢字與圖形結果之間的相 關性計算。根據使用者給定的查詢關鍵字,從包含關鍵字上的節點所出現在圖形 中的頻率,這些權重會取決於語言模型給定查詢的不同而改變,被使用做為另一 個考量依據,結合兩者考量,擁有越高機率的候選答案,表示該候選答案排名結 果會越前面。 論文[3]著重在關鍵字查詢對於關聯式資料庫的結果排名,該論文提出兩個關 11.

(20) 聯性語言模型(Relevance Language Model)。一個是資料本身在圖形結構上分佈有 關的關聯模型(Edge Specific Resource Models),是候選答案排名的依據以及該候 選答案在資料集裡面所占的比率。另一個與查詢字有關的關聯模型(Edge-Specific Relevance Models),是參考該候選答案與查詢字的相關程度。綜合此兩種關聯模 型,可避免查詢結果,過份地依賴在特定查詢字或某些常出現關鍵字占總資料很 大的比率,讓查詢結果更符合使用者需求。 總結上述候選結果產生及排名技術,早期的方法透過列舉和探索所有可能的 候選結果,將資料庫資料轉換成資料圖形再去計算分數和排名子圖形的方法,利 用估算的方式去選擇 Top-k 的答案。而現在新的趨勢是利用數據統計,直接用機 率值計算最可能的一個候選答案,依據每個候選答案的機率值由大到小進行排 名。. 2.3 搜尋結果彙整分析及呈現方式 有一些研究對使用者所輸入的查詢關鍵字及查詢結果,去觀察分析對於搜尋 結果的好壞是取決於給定查詢關鍵字的好壞、難易度,進而可預測查詢關鍵字的 有效性。另一些研究著重在查詢結果的呈現上,在搜尋過程中,使用者可能並不 知道要如何使用哪些關鍵字來代表他們的搜索需求。所以這部份研究在探討,對 於查詢結果要如何的分類、摘要呈現給使用者,讓使用者能快速瞭解,甚至可以 比較多重結果的不同。 12.

(21) <1> 預測查詢關鍵字的有效性 論文[5]認對於關聯式資料庫查詢,使用者所給予查詢關鍵字的好壞,嚴重地 影響到系統回傳的結果。若是好的查詢字則並不會因為系統所使用的計算模型有 了變化,而造成整個回傳結果有著顯著地差異。系統回傳的結果好壞,通常與查 詢字是否下的夠明確或是檢索的方法有關,而此該論文著重在於查詢字的判斷避 免太過普及的字造成得到的結果過於分散,藉由前後的排序差異程度,判斷其查 詢字的難易度。而具體明確的查詢字所得到的結果,才是容易符合者的搜尋意 圖。. <2> 搜尋結果彙整呈現方式 在一般使用搜尋引擎進行查詢,搜尋引擎會回傳符合關鍵字的文件內容和摘 錄一段查詢結果片段(Search Result Snippet)給使用者。但若要使用一般搜尋引擎 查詢結果片段(Search Result Snippet)之技術,套用到結構性資料查詢上是不適用 的。由於結構性資料多數都是轉換成圖形結構的格式,與一般搜尋引擎的文字文 件資料格式上並不同。論文[12]提出對於 XML 格式資料,利用使用者所輸入的查 詢關鍵字以及查詢於 XML 資料的結果,彙整出簡潔、清楚的查詢結果片段,讓 使用者快速掌握資訊且可以同時瀏覽多個片段,迅速判斷是否符合該搜尋意圖。 論文[15]則是認為 50%的關鍵字查詢類型屬於資訊探索的查詢,查詢結果本 身就具有多個面向的相關結果。該論文提出彙整查詢結果片段和排名等技術,可 以從結構性資料中自動區分不同面向的查詢結果,幫助使用者找到相關結果,並 13.

(22) 且可以直接快速地瀏覽,比較多個面向相關結果的不同。 由於結構性資料的特性是有具有綱要資料(Meta Data),描述資料所對應的屬 性,對於資料庫就是屬性欄位。論文[21]利用結構性資料具有屬性特性,視屬性 欄 位 為 摘 要 面 向 (Facet) 選 擇 的 其 中 一 個 考 量 。 所 提 出 特 定 查 詢 面 向 選 擇 (Query-Specific Facet Selection)作為摘要的評斷標準,除了依據查詢字和資料本身 相關性之外,再加上根據事先收集的查詢記錄檔,用機器學習方法學習每個查詢 字中的重要面向。所整理摘要出的結果是能對於每個不同的查詢,找出適合且包 含不同屬性欄位和屬性值呈現給使用者。 論文[7]認為使用者並不知道實際資料庫所擁有的內容,無法清楚地了解自己 所需要的資訊,就無法給予明確的關鍵字。該論文提出一個 ReDRIVE 系統,可 透過使用者所給予查詢字之搜尋結果進行處理,再透過推薦的機制,讓使用者使 用面向查詢(facet Search)的方式點選,讓使用者找到的查詢結果更符合本身需求 或是找尋到額外有興趣的主題資料。 總結上述關聯式資料庫之關鍵字查詢結果彙整呈現方式相關研究,目的都是 增進關鍵字查詢對於關聯式資料庫之效果,有從查詢關鍵字中預測查詢之有效性。 也有針對要回傳給是使用者的查詢結果探討如何彙整呈現,或是透過推薦的機制, 讓使用者參考立即動態調整的查詢條件。可自行決定本身的搜尋喜好,更能找到 符合的結果。. 14.

(23) 第三章 系統處理流程 本論文的系統流程如圖 3.1 所示,分為四個階段。以下將逐項說明。. 圖 3.1 系統流程圖. 1. 查詢拆解(Query Segmentation):使用者所下的查詢關鍵字,會包含一至多 個查詢條件。這個階段的步驟先將每一個查詢關鍵字以特性個別標記所對 應的種類(例如:屬性欄位、屬性值、分隔字詞等),再進行查詢關鍵字的拆 解,拆解成一至多個查詢條件單位(Predicate Unit)並且分組,建立關鍵字所 代表各項搜尋意圖之查詢條件。 2. 條件組合(Condition Combination):條件組合這個處理階段是根據上一階段 所拆解出的各個查詢條件單位,透過給定括弧的機制,指定查詢條件單位 間邏輯運算子組合運算的優先順序,完成查詢條件單位敘述式。其中第一 階段考慮具有平行條件(parallel condition)的查詢條件單位優先處理。第二 階段則依據查詢條件單位間所對應之屬性欄位、資料表鍵結距離和邏輯子 運算等優先順序做處理。在 SQL 查詢語句當中,WHERE 子句分為查詢條 件和資料表連結關係(join path)兩部份。而此階段所完成的查詢條件單位敘 15.

(24) 述式,是作為 WHERE 子句裡的查詢條件。 3. SQL 查詢產生與執行(SQL Query Generation and Execution):該階段處理步 驟會產生一個完整的 SQL 查詢語句。在先前階段已確立所要查詢的資料 表和查詢條件,但資料表之間會有外來鍵(foreign key)的關係,必須透過演 算法理論中圖形追蹤(Graph Traversal)的概念,進行資料表之間的連結整合 (table join),一個完整的 SQL SELECT 語句才得以真正完成,並且執行於 關聯式資料庫進行查詢。 4. 查詢結果摘要(Result Summary):此階段會以統計的觀點,根據查詢結果的 每一個屬性欄位中,屬性值的一致性和分佈變化差異,選取適當欄位提供 查詢結果中重要結果的摘要,幫助使用者得到有幫助且所預先未料想到的 資訊結果。. 16.

(25) 第四章 查詢拆解與條件組合 本章將介紹如何對資料庫資料的內容進行前處理、以及查詢關鍵字拆解和查 詢條件單位組合處理方法。. 4.1 資料庫資料前處理與索引建立 4.1.1 資料庫資料前處理. 本研究所考慮的資料庫類型為關聯式資料庫,為了判斷查詢關鍵字所屬類型, 必須先擷取出資料庫綱目(Database Schema)資訊和資料庫內容這兩類的字詞存成 一般文字檔。將關聯式資料庫的綱目部份如圖 4.1 所示,包括資料表名稱(Table Name),Character 等,資料表裡的屬性名稱(Attribute)如:title、year 等,視為資 料庫綱目資訊做為一類資訊收集起來。而資料庫屬性值(Attribute value),例如: Notre fille、On the Lot、1980、2007 等,如圖 4.2 所示,視為資料庫屬性值資訊 做為另一類資訊收集起來。除此之外,我們也先行計算每個屬性值在每個資料表 出現次數除以資料表總資料筆數得到的出現機率,以及每個屬性值在各欄位出現 次數除以資料表總資料筆數的機率值等統計資訊。包含資料庫綱目資訊和資料庫 內容這兩類的一般文字檔,以及字詞的統計資訊將用於下一階段索引的建立。. 17.

(26) 圖 4.1 資料庫綱目之資料表名稱和資料表欄位名稱內容範例. 圖 4.2 資料庫中屬性值內容範例. 4.1.2 索引建立. 從上步驟所收集整理過的資訊,有資料庫綱目資訊、資料庫屬性值資訊以及 屬性值對於各資料表、欄位的統計資訊。為了在取得一個查詢字詞能快速找到是 18.

(27) 否對應到哪張資料表或欄位名稱,或是哪個資料表哪個屬性欄位的屬性值及相關 統計資訊,我們使用 Apache Lucene 所提供建立文件索引和索引檔檢索文件的功 能,來幫助我們完成到所要達到的目的。 Lucene 是 Apache open source 項目之下的一個以 JAVA 語言建立的全文檢索 引擎,提供了完整的函式呼叫。Lucene 所使用的索引方法是倒置索引(inverted index),建立索引檔,如表 4.1 所示其輸出結果會顯示。每一個屬性值的字詞對應 到的哪張資料表以及位於該資料表的哪個屬性欄位,以及在該欄位所出現之筆數。 而另一類資料庫綱目資訊也同樣以此方式建立索引檔,如表 4.2 範例所示。. 表 4.1 倒置索引資料庫內容範例 資料庫屬性值 potter. nagel cinematographer malfunction. 對應資料表(屬性欄位)[頻率] Movie(title) [10] , Person(name) [10] Character(name)[10] Person(name) [10] , Character(name) [10], MovieInfo(information) [10] Role(type) [10], Movie(title) [10] Movie(title) [10], MovieInfo(information) [10] 表 4.2 倒置索引資料庫綱要資訊範例. 資料庫綱要資訊 character. 對應資料庫綱要類型(屬性欄位或資料表) Table (Character). movie. Table (Movie). name. Attribute (Character, Person). year. Attribute (Movie). 19.

(28) 資料前處理(Data Preprocessing)及以 Lucene 中 IndexWriter 物件建立索引為 系統離線處理和檢索元件:IndexSearcher 用來提供對建立完成之索引檔進行搜尋 的功能,Hits 物件則用於存放所搜尋出該字詞的相關資料庫資訊。其處理架構圖 如圖 4.3 所示。. 圖 4.3 離線處理和檢索元件架構圖. 4.2 查詢關鍵字分解 查詢關鍵字分解處理可分成兩個步驟:查詢字前處理及查詢拆解,以下分別 詳細說明介紹。. 4.2.1 查詢字前處理. 使用者所輸入的查詢關鍵字中,我們會對每一個關鍵字依據其在資料庫中出 現的類型標記相關資訊,以便於下一步驟進行查詢拆解。我們事先將關鍵字定義 20.

(29) 為五種類型,分別是資料庫屬性值(attribute value)、資料庫屬性名稱(attribute name)、 資料庫資料表名稱(table name)、分隔符號(delimiter)、運算字詞或符號(operator), 如表 4.3 所示。此步驟將查詢關鍵字中的每一個字到索引結構比對,並記錄所查 到的對應種類。若對應到資料庫屬性值,還會記錄該關鍵字是屬於哪一張資料表 以及哪一個屬性欄位。最後建立一個查詢字相關資訊的表格如表 4.4 所示,當作 之後查詢關鍵字處理的依據。. 表 4.3 字詞所屬類別範例 字詞所屬類別. 內容. 資料庫屬性值. Honda , Red , 2000 , Potter. 資料庫屬性名稱. Title , Year , Name , Note. 資料庫資料表名稱. Movie , Person , Character , Role. 分隔符號. And , or. 運算字詞或符號. > , < , = , not , more , less , greater 表 4.4 查詢字相關資訊記錄範例. Keyword Query. Car. red. Year. >. 2012. and. price. <. 15000. Symbol. T. V. A. O. V. D. A. O. V. Table Name. Models Details Details. Details. Attribute Name. Color. price. Year. 21.

(30) 4.2.2 查詢字拆解. 當每一個查詢關鍵字都被標上內容特性相關符號後,接著進行查詢關鍵字拆 解成查詢條件單位的處理步驟。我們定義了查詢條件單位(Predicate Unit)如下:為 一組包含屬性欄位名稱和屬性值(attribute-value pair,之後簡稱 a-v pair)。例如: 查詢關鍵字{white}所對應到的屬性欄位為 Color,則<color,white>形成一個查詢條 件單位 P。 在使用者所輸入的查詢關鍵字當中有兩種情況,可判斷出查詢條件單位。(1) 在查詢關鍵字裡已經有 a-v pair 的存在。例如查詢關鍵字{4 doors}即可直接形成 解釋成<door,4>這一組 a-v pair。(2)在查詢關鍵字中隱含著有 a-v pair 的關係,例 如查詢關鍵字{white},雖然從查詢關鍵字中無法直接得知所對應的型態,但可以 從上一個階段所建立的查詢字相關資訊記錄,得知{white}所對應到的屬性欄位為 Color,亦可表示隱含成<color,white>這一組 a-v pair。 將所有的查詢關鍵字,都拆解出查詢處理單位後,轉換成查詢條件單位格式 表示,如表 4.5 所示,以便於進行下個步驟條件組合的處理。. 表 4.5 查詢條件單位(Predicate Unit)的格式範例 Keyword Query. white. a-v pairs format. <color, white>. Predicate format. P1. and. 2. and 22. doors. Honda. <door , 2>. <model , Honda>. P2. P3.

(31) 4.3 條件組合 查詢關鍵字轉換成查詢處理單位格式後,必須將各個查詢條件單位進行邏輯 運算組合。所以我們對查詢條件單位設計了一個給定括弧的機制,訂定一些比對 規則判定查詢條件以邏輯運算子組合運算優先順序,決定最後查詢條件的組合。 在處理上,我們分為兩個階段處理步驟,方法敘述以下。. [第一階段處理] 在本論文 1.2 研究範圍與限制提到。假設資料庫綱目設計上,是採用第一正 規化設計,其規則是滿足「每個欄位只能含有一個屬性值」的條件。因此在本研 究不考慮一個欄位有多重屬性值的因素,以上為該研究處理方法之前提。 在第一階段處理,系統會先將查詢關鍵字依序掃描一遍,取得每個查詢關鍵 字所對應的屬性欄位和整個查詢關鍵字的屬性欄位順序性。例如:查詢關鍵字 {black or blue and 4 doors Honda}所對應的屬性欄位順序依序為{color, color, door , model},如表 4.6 所示。在掃描的過程中,偵測是否有連續相同屬性被指定兩個 不同屬性值條件的情況,我們稱為平行條件(parallel condition)的存在,例如:查 詢關鍵字{red or blue}所對應到的查詢條件單位格式為{<color,red> or <color,blue>}。我們認為查詢中出現平行條件的情況下,使用者的查詢意圖是對 資料給定多個可能的查詢條件。而不是要同時成立的兩個查詢條件,因此在給定 括弧會優先處理具有平行條件的查詢條件單位。我們認為平行條件有兩種情形: 23.

(32) (1)重複屬性、(2)重複屬性樣式。以下我們將介紹此兩種情形的平行條件。. 表 4.6 查詢關鍵字屬性欄位順序性範例 Keyword Query. black. a-v pairs format. <color, red>. or. blue. and. <color, blue>. 4 doors. Honda. <door , 2>. <model , Honda>. <1> 重複屬性(Repeating Attribute) 重複屬性意指在查詢關鍵字中連續的兩個查詢條件單位,所對應到的屬性欄 位都為相同屬性。例如:查詢關鍵字{red or blue}所對應到的查詢條件單位格式為 {<color,red> or <color,blue>}。“red”和“blue”這兩個查詢條件單位所對應到的 屬性欄位皆為“color”。在此情況下,我們會先行將這兩個查詢條件單位前後分 別給予左右括弧,表示在括號內的兩個查詢條件要優先處理。該範例如表 4.7 所 示。 表 4.7 查詢條件單位之重複屬性範例 Keyword Query a-v pairs format Predicate format. red. or. <color, red> (. P1. blue. and. <color, blue> or. P2. ). 2. doors. <door , 2> and. P3. <2> 重複屬性樣式(Repeating Attribute Pattern) 重複屬性樣式相較於重複屬性,不只有一個查詢條件單位,而是以形成連續 24.

(33) 多個查詢條件單位,重複樣式(Repeating Pattern)為單位。例如:查詢關鍵字{black and 4 or blue and 2}所對應到的查詢條件單位格式為{<color,black> and <doors,4> or <color,blue> and <doors,2> }。而“black”、“4” 和“blue”、“2”,這兩個 樣式所對應到的屬性樣式皆為“color”-“door”。在此情況下,我們會先分別將 這形重複樣式的查詢條件單位前後個別給予括弧,再將這兩組樣式查詢條件單位 樣式前後給予括弧,該範例處理結果如表 4.8 所示。. 表 4.8 查詢條件單位之重複屬性樣式範例 Keyword Query a-v pairs format Predicate format. black. and. <color, red>. ( ( P1. 2. doors. or. <door , 2> and. P2 ). blue. and. <color, blue> or. ( P3. 2. doors. <door , 2> and. P4 ) ). [第二階段處理] 在此階段將第一階段處理過程後尚未被括弧處理的查詢條件單位,進行第二 階段的括弧處理。我們所訂定的優先順序依據為(1)對應之屬性欄位在同一個資料 表中、(2)對應之資料表間的鍵結距離、(3)邏輯運算子優先順序、(4)組合運算由 左而右,以下我們將分別介紹該四種優先順序依據。. <1> 對應之屬性欄位在同一個資料表中 我們認為屬於同一個資料表的欄位,應該是有關聯的條件組合,因此在第二 階段的處理中,關鍵字所對應的屬性欄位在同一張資料表當中者優先加上括弧處 25.

(34) 理。例如:查詢關鍵字{Civic or mileage > 20 or price < 15000}所對應到的查詢條 件單位格式為{<model,Civic> or <mileage,20> or. <price,15000> }。三個查詢條件. 單位分別為 P1:<model,Civic>、P2:<mileage,20>、P3:<price,15000>。其中 P2: <mileage,20>和 P3:<price,15000>所對應的屬性欄位 mileage、price 都是在資料表 Detail 中。而 P1:<model,Civic>和 P2:<mileage,20>所對應的屬性欄位 model、 mileage 是在兩個不同的資料表 Models 和 Detail 中。所以 P2、P3 這兩個查詢條 件單位組合的優先順序會高於 P1、P2 查詢條件單位組合。該範例如表 4.9 所示。. 表 4.9 查詢條件單位對應在同一屬性範例 Keyword Query. Civic. a-v pairs format. <model, Civic>. Predicate format. P1. or. mileage > 20. or. <mileage, 20> or. (. P2. price < 15000 <price, 15000>. or. P3 ). <2> 對應之資料表間的鍵結距離 若兩個查詢條件單位各自所對應的屬性欄位不是在同一張資料表,接著就依 兩個查詢條件單位對應之資料表間的鍵結距離作為條件結合的優先判斷,鍵結距 離小的,括弧組合的優先順序為前。例如:查詢關鍵字{ price < 20000 and Ford and Mustang }所對應到的查詢條件單位格式為{<price,20000> and <make,Ford> and <model,Mustang> }。三個查詢條件單位分別為 P1:<price,20000>、P2:<make,Ford>、 P3:<model,Mustang>。其中 P2:<make,Ford>和 P3:<price,20000>所對應的屬性 26.

(35) 欄位 mileage、price 所對應到的資料表 Manufactures、Models 只有一層的鍵結關 係,而 P1:<price,20000>和 P2:<make,Ford>對應到的資料表 Details、Manufactures 是兩層的鍵結關係。所以 P2、P3 這兩個查詢條件單位組合的優先順序會高於 P1、 P2 查詢條件單位組合。該範例處理結果如表 4.10 所示。. 表 4.10 查詢條件單位對應之資料表間鍵結距離範例 Keyword Query a-v pairs format Predicate format. price < 15000. and. <price, 15000> P1. Ford. and. <make, Ford> and. (. P2. Mustang <model, Mustang>. and. P3 ). <3> 邏輯運算子優先順序 若查詢條件單位間括弧的優先順序都在同一層級的狀況下,則取決於兩者的 之間的邏輯運算子:邏輯 and 的優先順序會高於邏輯 or。例如:查詢關鍵字 { manufactured,2012> or <mileage,20> and <price,15000>}所對應到的查詢條件單 位格式為{<manufactured,2012> or <mileage,20> and <price,15000> }。三個查詢條 件單位分別為 P1:<manufactured,2012>、P2:<mileage,20>、P3:<price,15000>。 因為 P2、P3 之間的邏輯運算子為 and 而 P1、P2 之間的邏輯運算子為 or。所以 P2、P3 這兩個查詢條件單位組合的優先順序會高於 P1、P2 查詢條件單位組合。 該範例處理結果如表 4.11 所示。. 27.

(36) 表 4.11 查詢條件單位為同一階層依邏輯運算子優先順序範例 Keyword Query a-v pairs format Predicate format. manufactured 2012. or. <manufactured,2012 > P1. mileage < 20. and. <mileage, 20> or. (. P2. price < 15000 <price, 15000> P3 ). and. <4> 組合運算由左而右 最後查詢條件單位的優先順序都在同一層級的狀況下而且邏輯運算符號也 都為相同的情況下,組合的優先順序就是從左到右,依序兩個查詢條件單位做括 弧 組 合 。 例 如 : 查 詢 關 鍵 字 { manufactured,2012> and <mileage,20> and <price,15000>} 所 對 應 到 的 查 詢 條 件 單 位 格 式 為 {<manufactured,2012> and <mileage,20> and <price,15000> } 。 三 個 查 詢 條 件 單 位 分 別 為 P1 : <manufactured,2012>、P2:<mileage,20>、P3:<price,15000>。因為 P1、P2、P3 之間的邏輯運算子為 and,所以查詢條件單位組合的優先順序就由左而右,P1、 P2 先行括弧組合,所組合好的單位再跟 P3 括弧組合。該範例處理結果如表 4.12 所示。 表 4.12 查詢條件單位為同一階層且邏輯運算符號相同範例 Keyword Query a-v pairs format Predicate format. manufactured. 2012. and. <manufactured,2012 > ( P1. mileage < 20. and. <mileage, 20> and. P2 ) 28. price < 15000 <price, 15000>. and. P3.

(37) 將各個查詢條件單位組合完成,成為表達使用者給予關鍵字查詢的搜尋意圖 的查詢條件單位敘述式,作為 WHERE 子句裡的查詢條件,以便於下個階段 SQL 查詢語句產生處理。. 29.

(38) 第五章 SQL 查詢語句產生與查詢結果摘要 在得到查詢條件單位的組合後,本研究在本階段處理過程,要產出一個完整 的 SQL 查詢語句,處理方法是透過圖形追蹤(Graph Traversal)的方法從資料庫綱 目圖中找到具有查詢條件之資料表間的鍵結關係,加上 join 條件 SQL 查詢語句才 得以完成。除此之外,使用者在進行查詢時,可能對資料庫裡實際資料內容瞭解 有限,無法確切知道所有的內容,而且本身也不容易清楚地知道自己想要的欄位 資訊為何。我們提出了兩種根據統計資訊分析的觀點,對查詢結果的重要資料進 行摘要。在此章節將會介紹 SQL 查詢語句產生以及對查詢結果摘要的方法。. 5.1 SQL 查詢語句產生 SQL 基本查詢條件句型是由 SELECT、FROM、WHERE 三個子句組成的。 在此階段,我們必須先處理查詢資料表之間的鍵結關係,再依序將三個子句分別 確立,並且合併成 SQL 查詢語句。之後執行於關聯式資料庫當中執行。此節將會 介紹資料表連結關係及如何完成 SQL 基本查詢條件句型的三個子句。. 5.1.1 資料表鍵結關係. 在條件組合的處理階段中已確立所要查詢的資料表和查詢條件,但資料表之 間會有外來鍵(foreign key)的關係,必須透過圖形追蹤(Graph Traversal)的概念找出 30.

(39) 資料表之間的鍵結關係。 關聯式資料庫綱目可用圖形表示,圖形中的節點(node)代表資料庫的資料表 (Relation),例如資料表 Person、Paper、Journal 等皆有對應的節點。邊(Edge)代表 資料表和資料表之間的連結關係,例如資料表 Paper 對於資料表 Proceeding、Paper 及 Journal 都有外來鍵的關係,如圖 5.1 所示。我們使用廣度優先搜尋(breadth-first search)來找出資料表和資料表之間可能的連結路徑,不同的路徑也可視為解釋 (interpretation)查詢關鍵字表達的不同意思。例如依據圖 5.2 的圖形,關鍵字對應 到的兩個資料表為 Person 和 Journal,假設起點設為 Person、終點設為 Journal, 根據廣度優先搜尋策略走訪路徑,就會找出 Person → Paper → Journal,表示某 作者所發表的論文為期刊論文。或是 Person → Book → Paper → Journal,表示 某作者所發表的論文為期刊論文且也發表在專門書籍上。這些不同資料表連結路 徑對應到對於查詢關鍵字不同的解釋。 在可找出多種候選資料表連結路徑情況下,必須透過一個計算分數評斷不同 路徑表示查詢條件語意的可能性分數,以便從中找出最可能表示查詢條件語意的 資料表連結路徑。本研究參考論文[3]所提出的方法加以修改,用來評估一個路徑 表示查詢語意可能性的分數,我們所使用的方法考慮兩個部分:<1>依據查詢關 鍵字在資料表中的出現頻率特徵。其特徵又可細分成三個部份:(1)該屬性值出現 在該資料表對應欄位中的資料筆數、(2)該屬性值出現在該資料表中的資料筆數、 (3)該屬性值的長度。運用資訊檢索中以字詞的 TF-IDF 代表其在文章中重要性的 31.

(40) 概念,若字詞在對應欄位及該資料表中出現的頻率高,表示該字詞較可能是針對 該資料表指定的查詢條件,因此包含該資料表的資料表連結路徑應該得到比較高 的分數。<2>資料表連結圖形結構的大小及緊密度。資料表連結路徑圖形範圍小, 連結緊密度高,表示資料表間的關係程度比較高,因此比較可能是查詢關鍵字想 表示的查詢語意。最後我們會選擇候選資料表連結路徑最高分的當作所搜尋的資 料表之間的連結關係。 不同資料表連結路徑,這些資料表連結路徑對應到對查詢關鍵字不同的解釋。 在不同路徑的解釋中,最後在 WHERE 子句產生階段會選擇最適當路徑作為 join 條件的組合,SQL 查詢語句才得以完成。. 圖 5.1 資料庫綱目依據圖形表示範例. 32.

(41) 5.1.2 SQL 語句產生. <1> SELECT 子句 SELECT 子句是描述要取得哪些欄位資料。在查詢關鍵字中若有無法組成一 個(a-v pair)這種格式的查詢條件單位,只有對應到屬性欄位,那我們就會猜測此 關鍵字是使用者透漏想要搜尋的資料型態資訊,例如:查詢關鍵字{car blue and 2 doors Honda},car 只對應到資料表,而無法組成一個(a-v pair)查詢條件單位,因 此我們會把 car 視為使用者所要搜尋的欄位資訊,在查詢關鍵字分解的處理階段 中會標記成 Target,其欄位會被並列在 SELECT 子句中。若查詢關鍵字中沒有 Target 的標記提示,查詢條件單位都是完整組合而成,則系統內部處理是取出 FROM 資料表中所有的欄位(例:SELECT *)。在下一階段的查詢結果摘要中,我 們會對每一個欄位做統計資訊的運算分析,以便於挑選出適合摘要的屬性欄位。. 表 5.1 查詢關鍵字中有僅為屬性名稱範例 Keyword Query. car. blue. a-v pairs format. Target. <color, blue>. and. 2. doors. <door , 2>. Honda <model, Honda>. <2> FROM 子句 FROM 子句是描述資料從資料庫的哪些資料表取得。在查詢拆解階段的步驟 -查詢字前處理,有建立一個查詢字相關資訊的表格,記錄著每一個查詢關鍵字 所對應到的類型,以及該查詢關鍵字是屬於哪一個資料表及哪一個屬性欄位。可 33.

(42) 得知哪些資料表該被列在 FROM 子句中。除此之外,在處理資料表之間鏈結關係 時,會找出查詢關鍵字沒有出現但卻有間接相關的資料表,該處理步驟中會一併 記錄。這些資料表就是做為所要被查詢的資料範圍。. <3> WHERE 子句 WHERE 子句的是用來描述資料所要符合的條件,其組成分為查詢條件和資 料表連結關係(join path)兩部份。而在條件組合的處理階段已完成查詢條件單位敘 述式,是作為 WHERE 子句裡的查詢條件。而根據 5.1.1 方法敘述,完成資料表 鏈結關係。將查詢條件和資料表鏈結關係分別視為一個括弧單位,分別前後括弧 後用邏輯運算子 And 後,即完成 WHERE 子句。 在 SELECT、FROM、WHERE 三組子句依序完成後,就可組合成為我們所 產生的 SQL 查詢語句,如圖 5.2。即可於關聯式資料庫執行。 . Query:. George cinematographer year > 2008 or Julia actress year > 2010 . SQL Format:. SELECT * FROM Role , Person , Movie , Cast WHERE ( (Role.id = Cast.roleId). and. (Person.id = Cast.personId) and. (Movie.id = Cast.movieID) ) and ( ( ( (Person.name like '%george%') and (Role.role like '%cinematographer%') )and (Movie.year > 2008) ) ) or ( ( ( (Person.name like '%Julia%') and (Role.role like '%actress%' ) ) and (Movie.year > 2010) ) ) ) 圖 5.2 產生的 SQL 查詢語句結果範例. 34.

(43) 5.2 SQL 執行結果摘要 我們認為使用者進行查詢時,對資料庫裡實際資料內容瞭解有限,無法確切 知道所有的欄位內容,而且也不容易清楚地知道自己想要的資訊為何。若系統能 給予一些關聯式資料庫查詢結果的摘要,可幫助使用者得到結果中在統計上呈現 值得注意的資訊。 我們依統計觀點分別以一致性 (Consistency) 和分佈變化差異 (Variation of Distribution)當作摘要的兩種考量。針對兩種不同考量,我們分別設計評估方法從 查詢結果中挑選屬性欄位,並從該屬性欄位決定選取哪些屬性值當作摘要結果。. <1> 一致性 在搜尋出的查詢結果中,若存在特定欄位有大多的屬性值有相同,表示查詢 結果在該屬性欄位具有高一致性,且若以該屬性值為查詢條件,會涵蓋目前查詢 結果中很高比例。我們會摘要此種資訊讓使用者瞭解。 亂度值(Entropy)在資料探勘領域中用來判斷在一個群集裡不同類資料的分佈 狀況。不同類資料在群集裡分佈越平均,所算出的亂度值越大,代表資料越亂越 不一致;反之,不同類資料分佈的越不平均或集中在某個類別的資料,所算出的 亂度值越小,也代表較一致。在此我們運用亂度的概念,根據同一屬性欄位中不 同的分佈狀況,對查詢結果的各個欄位分別計算亂度值進行比較。亂度值越小表 示該欄位屬性值越集中,也表示該欄位屬性值一致性較高。故在此評估某個欄位 35.

(44) A 的 Entropy 值,如以下算式一所示: n. Entropy(A) = − ∑ PA (A. valuei ) log 2 PA (A. valuei ) (算式一) i=1. 其中 A.value1 ,A.value2 , …… , A.valuen 表示屬性欄位 A 中的 n 個不同屬性值。 PA(valuei)表示查詢結果中屬性值 valuei 在屬性欄位 A 的出現機率值。 在找出亂度值最小的欄位後,其表示是查詢結果中欄位值最具有一致性的欄 位。接下來我們會找出在該欄位中出現機率值最高的屬性值,作為該屬性欄位最 有代表性的屬性值,這組挑選出的屬性欄位及屬性值組合即作為一筆摘要資訊呈 現給用者。例如以表 5.2 所示範例,假設 SQL 執行後的查詢結果包含三個欄位(Note、 Title、Year)。我們依序計算三個欄位(Note、Title、Year)中每個屬性值的出現機率 值並算出各屬性欄位的亂度值,其結果如表 5.3 所示。很明顯可以看出 Title 欄位 6 筆資料都不相同,所以亂度值最高。而 Note 欄位中只有 2 種屬性值,而且 (uncredited)這個值佔有 5/6 的比例,因此 Note 欄位的亂度值低於 Title 欄位。我 們在考慮一致性的摘要結果就會選出欄位 Note 及對應屬性為(uncredited)呈現給 使用者。. 36.

(45) 表 5.2 SQL 查詢執行後查詢結果之範例. Note. Title. Year. (uncredited). Unfair Game. 2010. (uncredited). Time of Her life. 2008. (uncredited). Dogs of War. 2010. (uncredited). As Young as you Feel. 2010. (uncredited). Battle Stations. 2010. (as Charles E.Stevenson). Citizen Kane. 2005. 表 5.3 查詢結果之各個欄位亂度值結果範例. 欄位名稱. Title. Note. Year. Unfair Game , 1/6 2010 , 4/6 (uncredited) , 5/6 各屬性值在 該屬性欄位的 出現機率值. Time of Her life , 1/6 Dogs of War , 1/6 2008 , 1/6 As Young as you Feel , 1/6. (as Charles E.Stevenson) , 1/6. Battle Stations , 1/6 2005, 1/6 Citizen Kane , 1/6. 亂度(Entropy). 0.77815. 0.19568. 0.37678. <2> 分佈變化差異 在搜尋出的查詢結果中,若存在一種屬性值從原先資料庫欄位分佈到查詢結 果的欄位分佈有大幅變化,我們視為這是一種特殊的資料,會摘要此種資訊讓使 用者瞭解。此方法是希望比較屬性值在查詢結果及資料庫原欄位的機率分佈差異。 37.

(46) 針對一個查詢結果中的屬性欄位 A,令 A.value1 ,A.value2 , …… , A.valuen 表示 A 在查詢結果出現屬性值。查詢結果中評估一個屬性 A 之屬性值和原資料庫中屬性 值的機率變化差異,查詢結果中評估一個屬性 A 之屬性值和原資料庫中屬性值的 分佈變化倍率,如算式二:CR(Change Radio)代表的是一個屬性值的分佈變化倍 率 。 PDB(A.value) 代 表 屬 性 值 A.value 在 資 料 庫 欄 位 A 中 的 出 現 機 率 值 , PResult(A.value)表示屬性值 A.valuei 在查詢結果中欄位 A 中出現的機率值。. CR(A) =. PDB (A. valuei ) (算式二) PResult (A. valuei ). 對於查詢結果,分佈機率值比例最大的的屬性值,選出為特殊特徵值。這個 值表示經過查詢條件,其在查詢結果中的分佈機率相對於在資料庫內容的分佈機 率大幅度的變少,表示其在查詢結果中出現的特殊性。因此系統會將查詢結果中 此特殊屬性值的資料及其分佈變化差異倍率摘要呈現給使用者。 例如圖 5.3 所示範例,假設 SQL 執行後的查詢結果總共有 10 筆資料,而 Note 欄位中有 3 種屬性值(uncredited、archive footage、producer)且其在 Note 欄位出現 3. 5. 2. 次數分別為 3、5、2,因此其在查詢結果中的分佈,機率分別為10、10、10,而在 資料庫 Note 欄位總共有 35 筆資料,這三個屬性值的出現次數分別為 20、5、10, 20. 5. 10. 因此其在資料庫中的分佈,機率分別為35、35、35,有了這兩組分佈可計算 Note 之屬性值的進行分佈變化倍率,得知欄位 Note 各個屬性值分佈變化倍率結果,其 中屬性值-(uncredited)分佈差異比例最大,差異倍率比例為 1.905。而假設查詢結 果的另一個欄位 Year 的各個屬性值的出現次數、屬性值在於查詢結果分佈、屬性 38.

(47) 值在於資料庫原欄位分佈、分佈變化倍率、等資訊如圖 5.4 所示。其中屬性值-2010 分佈變化倍率為 2.533 最大。在此例子會選擇欄位 year 中分佈變化倍率最大屬性 值 2010、以及欄位的資料呈現給使用者。. 屬性值內容. (uncredited). (archive footage). (producer). 資料庫分佈. 20 35. 5 35. 10 35. 查詢結果分佈. 3 10. 5 10. 2 10. 分佈變化倍率. 1.905. 0.286. 1.429. 圖 5.3 欄位 Note 及各屬性值在查詢結果和資料庫分佈示意圖之範例. 39.

(48) 屬性值內容. 2008. 2010. 2012. 資料庫分佈. 40 100. 40 100. 20 100. 查詢結果分佈. 13 19. 3 19. 3 19. 分佈變化倍率. 0.585. 2.533. 1.267. 圖 5.4 欄位 Year 及各屬性值在查詢結果和資料庫分佈示意圖之範例. 40.

(49) 第六章 實驗結果與討論 為了評估本論文所提出方法對研究目標之達成效果,我們分別進行兩部份的 實驗,評估本系統處理查詢關鍵字轉換成 SQL 查詢語句的正確性,以及使用者對 本系統所提供查詢結果摘要之滿意程度。以下將分別介紹實驗資料來源、環境設 定、以及各實驗進行方式和實驗結果。. 6.1 實驗資料來源及環境設定 6.1.1 實驗資料來源. 本研究實驗所使用的兩個關聯式資料庫為 IMDB(Internet Movie Database)電 影資料庫和 DBLP(Database and Logic Programming)論文資料庫。IMDB 電影資料 庫是由論文[8]作者從實際 IMDB 網站1,蒐集 IMDB 資料庫資料的一部分所建立 的資料集。該資料集於網站 Joel Coffman :: Resources2提供開放下載。該資料集原 始檔案為儲存在 PostgreSQL 之新增資料語法格式,我們透過 Java 程式進行文字 處理,擷取檔案資料庫綱目和屬性值的部份,再透過 SQL Insert 新增資料語句, 儲存到我們所建立在 Microsoft SQL Server 的資料庫系統環境當中。該資料庫有 6 個資料表,資料庫綱目圖(Schema diagram)如圖 6.1 所示,其中總共包含有超過 163. 1 2. http://www.imdb.com/ http://www.cs.virginia.edu/~jmc7tp/resources.php 41.

(50) 萬筆的電影相關資訊資料。. 圖 6.1 IMDB 資料庫綱目(Database Schema). DBLP(Database and Logic Programming) 論 文 資 料 庫 , 此 資 料 集 是 網 站 (https://code.google.com/p/dblp2csv/)由實際 DBLP 官方網站3所提供的 XML 資料格 式中的一部分資料庫資料蒐集而來。該資料集已轉換成 Microsoft SQL Server 資料 庫系統環境的資料庫備份檔(.bak)提供下載。透過還原資料庫備份檔將資料儲存到 我們所建立在 Microsoft SQL Server 資料庫系統環境當中。該資料庫綱目中共有 8 個資料表,其綱目圖如圖 6.2 所示,總共包含有超過 360 萬筆的論文相關資訊資 料。. 3. http://dblp.uni-trier.de/xml/ 42.

(51) 圖 6.2 DBLP 資料庫綱目(Database Schema). 6.1.2 實驗環境. 本論文中系統實作和實驗所使用的機器軟硬體規格、使用之機器規格作業系 統、及程式開發軟體版本如表 6.1 所示。 表 6.1 機器軟硬體規格及開發環境 機器軟硬體規格 及開發環境 作業系統 CPU 處理器 記憶體. 對應之內容 Window 7 個人電腦 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz DDR3 16.0GB. 程式撰寫語言. JAVA. 開發環境 IDE. Eclipse. 關聯式資料庫系統軟體. Microsoft® SQL Server® 2012 Express. 43.

(52) 6.2 查詢關鍵字轉換成 SQL 查詢語句正確性評估 本研究第一個目的為對使用者所給查詢關鍵字轉換出對應的 SQL查詢語句, 因此本實驗將評估系統轉換出 SQL 查詢語句是否符合使用者所想要表達的搜尋 意圖。. 6.2.1 實驗方法. 此部份實驗會依據有沒有給予使用者查詢意圖描述,分為控制情況和非控制 情況。評估系統可將使用者所給定查詢關鍵字轉換成 SQL 查詢語句的能力及正確 性,以下分別介紹兩種不同情況的實驗方式。. <1> 查詢控制型 在控制型實驗的情境設定,我們會先提供使用者搜尋意圖描述,使用者在閱 讀該搜尋意圖後,再給定關鍵字進行查詢,以及說明查詢輸入格式,除了有提供 關鍵字之外,還提供 And 或 Or 等邏輯運算子以及欄位、運算子及常數的組合(例 如:year > 2012)。控制型關鍵字查詢問卷範例,如表 6.2 所示。此控制型部分的 實驗,每一個搜尋意圖會請五位受試使用者進行查詢,受試使用者會根據自己的 解讀,給定他認為使用能代表此搜尋意圖的查詢關鍵字,則所收集到的結果範例 如表 6.3 所示。. 44.

(53) 表 6.2 給予查詢意圖得知關鍵字查詢問卷範例. Query George 在 2008 年之後擔任攝影師(cinematographer) 搜尋意圖描述. 的電影,或 Julia Roberts 擔任女演員(actress)的在 2010 年之後的電影. 關鍵字查詢 (Keyword Search) 表 6.3 使用者根據搜尋意圖描述給予查詢關鍵字之範例. Query George 在 2008 年之後擔任攝影師(cinematographer) 搜尋意圖描述. 的電影,或 Julia Roberts 擔任女演員(actress)的在 2010 年之後的電影. 關鍵字查詢 (Keyword Search) 使用者 1 使用者 2 使用者 3 使用者 4 使用者 5. movie George cinematographer year > 2008 or Julia Roberts actress year > 2010 Movie cinematographer George after 2008 or actress Julia Roberts after 2010 George cinematographer movie 2008 or Julia Roberts actress movie 2010 George cinematographer 2008 movie or Julia Roberts actress movie 10 years ago movie cinematographer George actress Julia Roberts. 我們針對 IMDB 電影主題資料庫,提供了 8 個不同的搜尋意圖描述如附件 A 所示,每個搜尋意圖描述皆蒐集了 5 組查詢關鍵字,合計共 40 組查詢。而對 DBLP 論文資料庫則提供 10 個搜尋意圖描述,如附件 A 所示,每個搜尋意圖描述皆蒐 45.

(54) 集了 5 組查詢關鍵字,合計共 50 組查詢。每一組查詢關鍵字轉換後產出的 SQL 查詢語句,由具有 SQL 知識背景的人員進行判斷是否與搜尋意圖描述相同。若相 同表示 SQL 轉換正確,反之認為兩者不同則視為轉換錯誤。而評估系統轉換 SQL 查詢語句正確率,是根據系統可正確將蒐集到的每一組查詢關鍵字轉換成正確的 SQL 查詢語句之查詢個數除以所蒐集到的查詢組數,如算式三所示。假設 T 為所 蒐集到的查詢組數,P 為正確地將查詢關鍵字轉換成的 SQL 查詢語句的查詢組數. Accuracy =. P (算式三) T. <2> 查詢未控制型 在查詢未控制型情境上的設定,我們只提供該資料庫的主題、資料庫內的屬 性欄位有哪些及基本意義為何,以及輸入格式的限定,如圖 6.3 所示。實驗會請 受試使用者任意輸入查詢關鍵字描述他想搜尋的資料之查詢條件,並且提供該查 詢對應的搜尋意圖描述,提供我們判定本系統轉換 SQL 查詢語句正確性之參考。 查詢未控制型關鍵字查詢問卷範例,如表 6.4 所示。表 6.5 顯示的所蒐集的查詢 關鍵字及所意指的搜尋意圖描述之範例。. 表 6.4 關鍵字查詢問卷範例. Query 關鍵字查詢 (Keyword Search) 搜尋意圖描述 46.

參考文獻

相關文件

Mehrotra, “Content-based image retrieval with relevance feedback in MARS,” In Proceedings of IEEE International Conference on Image Processing ’97. Chakrabarti, “Query

in Proceedings of the 20th International Conference on Very Large Data

(1999), &#34;Mining Association Rules with Multiple Minimum Supports,&#34; Proceedings of ACMSIGKDD International Conference on Knowledge Discovery and Data Mining, San Diego,

The International Conference on Innovation and Management 2012 (IAM 2012) is an annual conference on Innovation and management since 1999, organized and sponsored by the

and Liu, S.J., “Quantifying Benefits of Knowledge Management System: A Case Study of an Engineering Consulting Firm,” Proceedings of International Symposium on Automation and

Lange, “An Object-Oriented Design Method for Hypermedia Information Systems”, Proceedings of the Twenty-seventh annual Hawaii International Conference on System Sciences, 1994,

Godsill, “Detection of abrupt spectral changes using support vector machines: an application to audio signal segmentation,” Proceedings of the IEEE International Conference

Shih and W.-C.Wang “A 3D Model Retrieval Approach based on The Principal Plane Descriptor” , Proceedings of The 10 Second International Conference on Innovative