日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Mining Precision Interface From Query Logs -- 学习笔记(二)

發(fā)布時(shí)間:2024/2/28 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mining Precision Interface From Query Logs -- 学习笔记(二) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

4 交互mining

?????? 前面說(shuō)到解決最終問(wèn)題的步驟之一:分析日志以識(shí)別有意義的結(jié)構(gòu)更改,因?yàn)槿绻麊渭冇贸蓪?duì)AST之間的差異表 會(huì)導(dǎo)致不相關(guān)的差異,所以并不是所有從logs中分析出的差異對(duì)生成精確界面都是有意義的。

本節(jié)作者提出的 語(yǔ)句以及編寫 語(yǔ)句的工具:就是一種可以指定 有意義的結(jié)構(gòu)改變的特定于域的語(yǔ)言

Q1:為什么不使用 來(lái)分析所有 中的差異?

答:有三個(gè)方面:

(1)出現(xiàn)不想關(guān)的結(jié)構(gòu)改變:像函數(shù)重命名,更改project clause的別名,重排 子句中的表,對(duì)查詢語(yǔ)義沒(méi)有任何的影響,而這些差異在 表中也是有記載的。

(2)誤導(dǎo)性差異,舉個(gè)栗子:

① SELECT a FROM T WHERE 1=1

② SELECT a FROM T GROUPBY a

上面這兩個(gè)查詢語(yǔ)句,樹(shù)對(duì)齊算法分析出的可能是在①中用GROUPBY子句替換WHERE子句形成了②。但事實(shí)上這并不是有意義的能夠映射到小部件的變化。有可能①②是通過(guò)將 WHERE子句和GROUPBY子句添加到一個(gè)基礎(chǔ)的查詢語(yǔ)句 SELECT a FROM T上的。

(3)有特殊情況,再舉個(gè)栗子:

① SELECT b FROM T WHERE a>5 AND a<10

② SELECT b FROM T WHERE c>5 AND a=10

第一個(gè)查詢通過(guò)整數(shù)來(lái)過(guò)濾值,我們很自然的就能想到它可以用范圍滑塊來(lái)映射。但是范圍滑塊卻不能用于第二個(gè)查詢,為了區(qū)別這兩個(gè)語(yǔ)句,精確界面需要額外的語(yǔ)義來(lái)說(shuō)明更改的常量是共享相同屬性的不等表達(dá)式的一部分。

基于上面的原因,應(yīng)該根據(jù)應(yīng)用程序和開(kāi)發(fā)人員的需求,篩選有意義的查詢結(jié)構(gòu)變化

Q2: 語(yǔ)句?

1、 語(yǔ)句是一種特定于域的語(yǔ)言,基于此語(yǔ)言,用戶可以指定查詢結(jié)構(gòu)變化的位置和方式,一個(gè) 語(yǔ)句通過(guò)一對(duì)查詢 進(jìn)行計(jì)算,返回一個(gè)輸出表,如果不匹配則返回一個(gè)?。等價(jià)于通過(guò) 對(duì) 進(jìn)行過(guò)濾,并對(duì)子樹(shù) 進(jìn)行轉(zhuǎn)換

2、 子句的結(jié)構(gòu)組成

?FROM子句:用來(lái)定義精確界面在搜索時(shí) 結(jié)構(gòu)變化的范圍,并對(duì) 中的 子樹(shù) 進(jìn)行轉(zhuǎn)換。 < path expression > 由 能確定祖先孩子關(guān)系的運(yùn)算符 組成。path 總是和 匹配,它還指定要返回的祖先子樹(shù);FROM子句返回與路徑匹配,并包含子樹(shù)的最深子樹(shù)。路徑 //* 表示不對(duì) 中的子樹(shù)進(jìn)行轉(zhuǎn)換。

總之,FROM子句就相當(dāng)于把范圍變量綁定到下面的語(yǔ)句:

SELECT id, pid1, pid2, extract(,path),ancestor( ,path),ancestor( ,path)

FROM

WHERE matches( , path)

WHERE子句:是對(duì)FROM子句中定義的范圍變量的布爾表達(dá)式;可以用路徑操作符來(lái)操作子樹(shù)

MATCH子句:match子句用來(lái)給 語(yǔ)句命名,這樣就可以用成功的匹配標(biāo)記交互圖中的邊。

Q3:怎么執(zhí)行和寫語(yǔ)句?

被轉(zhuǎn)換成SQL查詢,并在一對(duì)由 定義的 分區(qū)上執(zhí)行,執(zhí)行的結(jié)果集中到一個(gè)叫做? 的表中。是為開(kāi)發(fā)者設(shè)計(jì)的,沒(méi)有 一定處理抽象語(yǔ)法樹(shù)的基礎(chǔ)的用戶使用起來(lái)有點(diǎn)困難。針對(duì)這個(gè)問(wèn)題,作者開(kāi)發(fā)了一個(gè)簡(jiǎn)化書寫 語(yǔ)句的工具:這個(gè)工具可以檢測(cè)成對(duì)樹(shù)中最普遍的差異,然后讓用戶來(lái)選擇他們認(rèn)為重要的差異。具體操作過(guò)程:(1) 用戶指定一些可能的成對(duì)差異或者一些可能會(huì)不同的結(jié)點(diǎn)(2)工具從日志中提取樣本,比較樣本中所有成對(duì)樹(shù),并且指出滿足指定條件的樹(shù)(通過(guò)還原語(yǔ)法樹(shù),高亮那些變化的子句,這樣使無(wú)基礎(chǔ)用戶更易懂)。

這個(gè)工具對(duì)任何的查詢轉(zhuǎn)換都能生成 語(yǔ)句,為了幫助用戶優(yōu)化搜索,工具還可以把與現(xiàn)有 語(yǔ)句匹配的差異從要搜索的后序集合中排除,減小搜索范圍。

?

?

?5 交互映射

前面交互mining輸出一個(gè) 表,表示日志中成對(duì)查詢所表示子樹(shù)之間有意義的差異。把這個(gè)? 表映射到一個(gè)交互圖 ,圖中每個(gè)頂點(diǎn)代表一個(gè)查詢,每個(gè)記錄都是一條用交互描述的有向邊 。圖是一個(gè)稠密圖,因?yàn)槊繉?duì)查詢之間可能會(huì)被多條轉(zhuǎn)換邊連接。目標(biāo)是生成一個(gè)可以表達(dá)交互圖中所有查詢的一個(gè)界面集合 .

要實(shí)現(xiàn)這個(gè)目標(biāo),有三個(gè)挑戰(zhàn)

(1)要為圖中每條邊選擇合適的部件來(lái)表達(dá)交互(也就是查詢語(yǔ)句的變化

(2)提取域和模板函數(shù)來(lái)具體化這些部件

(3)在界面上映射交互圖

下面的部分則是作者針對(duì)這些問(wèn)題,提出的解決方案

Q1:對(duì)交互圖進(jìn)行預(yù)處理

前面說(shuō)過(guò)一個(gè)部件 是由一個(gè)域? ,一個(gè)交互 ,一個(gè)模板函數(shù) 確定。如何從 ? 中提取模板函數(shù)和域呢?方法是從 的子樹(shù)中提取參數(shù)化的模板樹(shù),然后利用參數(shù)來(lái)構(gòu)造域,還使用這些結(jié)果來(lái)標(biāo)記交互圖中的邊。具體操作:

對(duì)于模板函數(shù):

用 個(gè)參數(shù)代替子樹(shù) 中 原來(lái)的 個(gè)值,構(gòu)建參數(shù)化的模板樹(shù) ;表? 用參數(shù)化的樹(shù)模型參數(shù)值 確定。然后通過(guò)這些模板把樹(shù)進(jìn)行分組,對(duì)每個(gè)組 ,收集組內(nèi)所有樹(shù)的參數(shù)值,然后找到一個(gè)參數(shù)至少變化了一次的下標(biāo)集合 ,然后生成每個(gè)組的表 ,這個(gè)表代表了在相同的參數(shù)化子樹(shù)中變化的參數(shù)值。

每個(gè)部件 都有一個(gè)k維的域。如果表 中的屬性和 域的維度之間一一映射,則參數(shù)化子樹(shù)可以被映射到部件 ,從而使每個(gè)映射都在 范圍內(nèi)。這樣的話,那模板函數(shù) 只是小部件原狀態(tài)到值表中的屬性的一一映射,然后這些屬性綁定到了模板子樹(shù)的參數(shù)。

對(duì)標(biāo)記邊:

交互圖中每條邊 都代表 表中的一條記錄 。我們用 路徑和模板子樹(shù) 標(biāo)記邊 ,還有其參數(shù)值 .

一個(gè)邊可以被映射到界面的多個(gè)部件,把這個(gè)候選部件集叫做 .

Q2:部件映射

下一步生成可以 表示 log 中所有查詢的界面集合 .

(1)首先,定義界面閉包集合 ,根據(jù)交互圖確定它的代價(jià) ,從集合覆蓋問(wèn)題出發(fā),通過(guò)松弛,證明了界面生成問(wèn)題是個(gè)NP問(wèn)題。作者提出了一個(gè)帶優(yōu)化的圖松弛啟發(fā)式算法來(lái)加快這個(gè)過(guò)程。作者假定每條邊都有一個(gè)候選部件,每個(gè)轉(zhuǎn)換都是標(biāo)準(zhǔn)的,并且每個(gè) 語(yǔ)句在任何成對(duì)查詢之間最多生成一條邊。然后對(duì)這些約束進(jìn)行松弛。

(2)一個(gè)界面 包括一個(gè)初始的查詢 和一個(gè)部件集合。定義這個(gè)界面的閉包為一個(gè)可達(dá)查詢的集合。

(可達(dá):存在一些從初始查詢 到 的路徑,這些路徑可以由 中的部件表達(dá))

(邊 可以用部件 表示:邊 的路徑和模板子樹(shù) 和部件的相同,則可以表示)

(3)部件 的域定義為在 中它表示的邊的值的集合。這個(gè)域用來(lái)計(jì)算它的代價(jià) 以及后續(xù)的界面集合 的代價(jià)。

Q3:解決NP-Hardness

從集合覆蓋到界面生成描述松弛方法:

給定一個(gè)總體 和 一個(gè)能覆蓋 的 包含 m 個(gè)子集合的集合 。集合覆蓋識(shí)別子集中的最小子集 ,那么 .(我的理解是最小不重疊的子集

可以構(gòu)造一個(gè)交互圖 , 每個(gè)子集 形成一個(gè)最大子圖? (我理解的是這個(gè)子集中的查詢結(jié)構(gòu)差異是相似的),這個(gè)圖的邊由子集的id 標(biāo)識(shí)。最大子圖中的邊由一個(gè)唯一的候選組件 表示(也就是說(shuō)這個(gè)子集中的界面是可以用一個(gè)候選部件表示的),若其域?yàn)榭談t代價(jià)為0,否則為1。往一個(gè)界面中添加組件 就把子集 中的所有元素添加到閉包中,最終界面集的部件集一起構(gòu)成最終界面的候選部件集。

Q4:啟發(fā)式算法

作者之前提出一種貪心啟發(fā)式算法解決界面生成問(wèn)題。通過(guò)為查詢集中每個(gè)查詢 分配一個(gè)界面 初始化 最終界面集合集 ,然后使用貪心法合并界面直到這些界面的總代價(jià)不再減少為止

如果存在0個(gè)或更多的邊 連接查詢 ? 和 則可以合并 界面 ,用邊 合并界面。

最終合并的界面 使用 的初始查詢,把來(lái)自兩個(gè)界面的部件和邊 的部件結(jié)合起來(lái)構(gòu)成部件集 .


可以通過(guò)合并 表示相同轉(zhuǎn)化的部件 來(lái)減少 。(表示相同轉(zhuǎn)化的部件定義:兩個(gè)有相同路徑和特征函數(shù)的部件 可以合并成一個(gè)部件 ,其域值為 ).

針對(duì)每次迭代k,作者發(fā)現(xiàn)合并界面可以減少總代價(jià):

?Q4:針對(duì)多個(gè)候選部件,怎么選擇合適的?

在實(shí)際操作過(guò)程中,一個(gè)給定的邊 e 有多種候選組件 .

作者選擇用啟發(fā)式算法(合并界面)處理候選部件而不是在初始界面集就將邊綁定到特定的組件上。為了完成這個(gè)任務(wù),需要定義兩個(gè)部件如何進(jìn)行合并,以及他們的代價(jià)應(yīng)該怎樣估計(jì)。一旦完成對(duì)界面的合并,就可以從每個(gè)候選集選擇代價(jià)最小的界面。

合并候選集 和 要合并兩個(gè)集合 ,執(zhí)行上述過(guò)程的域合并的過(guò)程。候選部件集的代價(jià)通過(guò)集合中代價(jià)最小的部件確定,即? .

Q5:對(duì)交互圖中兩個(gè)頂點(diǎn)間的多條邊的處理:

表中包括 至少一個(gè)記錄,每個(gè)都代表圖中成對(duì)查詢之間的一條路徑,為了能完全將查詢 轉(zhuǎn)換到 ,將 邊 建模為一個(gè)超級(jí)邊 “super—edge” ,它的候選部件集是 每條邊的候選部件集的叉乘積 .

Q6:基于集合的交互:

大多語(yǔ)言支持集合表達(dá)。前述的模型沒(méi)有考慮集合操作的交互建模。例如,一個(gè)查找數(shù)字差異的語(yǔ)句輸出了一個(gè)成對(duì)差異的集合。多數(shù)情況下,把這些成對(duì)差異映射到一個(gè)多選擇的部件。

為了自動(dòng)的將 這種 表轉(zhuǎn)換成基于集合的交互,作者使用一種類似于提取模板函數(shù)的方法

(1)首先收集 里所有的子樹(shù)

(2)針對(duì)每棵子樹(shù),尋找 它最近的祖先結(jié)點(diǎn)(祖先結(jié)點(diǎn)是list類型)為根的子樹(shù) .

(3)如果不存在這樣的子樹(shù),就停止。否則,用一個(gè)參數(shù)變量代替 中的 ? 生成一個(gè)模板祖先子樹(shù)

(4)若所有的模板祖先都相同,就將這些子樹(shù)作為一個(gè)集合,然后將這個(gè) 映射到一個(gè)集合邊,這條邊的候選部件是集合部件。

Q7:界面生成:

一旦確定了最優(yōu)的界面集集合 ,就從候選集合中根據(jù)每個(gè)部件的域 選出代價(jià)最低的部件。這時(shí)就可以運(yùn)行標(biāo)準(zhǔn)界面布局算法,然后為每個(gè)界面在web應(yīng)用程序中呈現(xiàn)一個(gè)選項(xiàng)卡。

?

?

小結(jié):

對(duì)整篇文章來(lái)說(shuō),最重要的部分就是 第 3/4/5 部分,這三部分重點(diǎn)講了作者對(duì)提出問(wèn)題的解決方案,通過(guò)建模,運(yùn)用合適的算法進(jìn)行解決。

這部分的內(nèi)容是最晦澀難懂的,因?yàn)樯婕昂芏鄶?shù)學(xué)專業(yè)名詞和計(jì)算機(jī)專業(yè)名詞,還有很多數(shù)學(xué)建模的過(guò)程。第二遍看,看了接近兩天,還是有一部分意思理解的不太準(zhǔn)確!可能需要多讀幾遍文章才能真的理解吧!

?

印象比較深的應(yīng)該是把部件映射問(wèn)題建模成集合覆蓋問(wèn)題來(lái)求解了,數(shù)學(xué)真的博大精深,任何現(xiàn)實(shí)問(wèn)題都可以用數(shù)學(xué)思維解決,學(xué)好數(shù)學(xué)真的太重要啦!

?

2019.8.18

綠色為今日閱讀新的認(rèn)識(shí)

總結(jié)

以上是生活随笔為你收集整理的Mining Precision Interface From Query Logs -- 学习笔记(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。