搜尋中query擴充套件方法彙總

2022-05-07 02:00:07 字數 1221 閱讀 4529

搜尋系統是乙個複雜的系統,當使用者在輸入框中輸入想要的問題,或者輸入想要的商品後,點選"確定"按鈕,搜尋系統會經歷一系列的操作,query理解和分析,召回結果,相關性打分,排序等,所有的這些操作都在毫秒級別內完成。

而本文所講述的query擴充套件是在query理解和分析階段的操作。query擴充套件,顧名思義就是對當前輸入的query進行一定的改寫,經過擴充,得到其擴充的詞彙。

在不同的地方,可能叫法不同,有的叫query改寫,有的叫同義詞等等。

query擴充套件的用途主要用於召回階段的擴召回。當使用者的輸入不明確的時候,我們可以將當前的query進行擴充套件,得到使用者想要的結果。例如當使用者輸入'西紅柿炒雞蛋'的時候,我們可以將query擴充套件為'番茄炒雞蛋'、'番茄炒蛋',這樣在召回階段就可以召回更多的結果,給使用者更好的體驗。

西紅柿炒雞蛋----番茄炒蛋

馬鈴薯----土豆

query擴充套件方法大體可以分為如下幾類:字面匹配方式、基於使用者日誌的挖掘、基於外部資料的挖掘方式、語義相似度、基於seq2seq的改寫、基於強化學習的改寫等。

字面匹配方式是通過各種規則,拼音匹配,編輯距離等方式,得到字面上的匹配結果。

一千零一夜---1001夜

客二代---客2代

凱德茂---凱德mall

la尚癮---辣尚癮

基於使用者點選日誌

基於使用者點選行為日誌是指若使用者通過兩個不同的搜尋詞點選了同乙個doc,那麼我們認為這兩個query是有聯絡的,共點選次數越多,相似性也越大。所以一些基於推薦的方法都可以用於這裡的query改寫,常用的一些演算法有simrank,simrank++等。

優缺點基於使用者行為日誌可以一定程度上解決語義的問題,同時也可以挖掘出較多的相似query,不過生成的badcase也可能較多,所以需要進行甄別。除此之外,對於一些冷啟動的系統來說,由於沒有較多的使用者行為資訊,所以就沒有辦法利用當前方法。

若是我們訓練好了乙個語言模型,通過該模型我們可以得到query的向量的話,那我們可以計算候選query對相似性資訊,最常見的就是雙塔模型,同於兩個query,分別得到其向量,進而通過cosin的方式計算相似性分數。這種方法會用到預訓練的語言模型,同時,我們也需要得到有標記的query對作為訓練資料。

基於seq2seq的方法類似於翻譯,首先我們要有一批同義詞資料集合,進而我們可以用nmt的方法來進行求解。當然這種方法會引起語義飄移的現象。

Ztree擴充套件方法彙總 更新中

var treeobj fn.ztree.getztreeobj tree div 得到ztree物件 1.展開所有節點 treeobj.expandall true 2.設定根節點展開 var treeobj fn.ztree.getztreeobj tree div var nodes tree...

重寫store中的query方法

grid中有時候會統計所有子節點的值進行彙總時,store中只有query 方法,但有時會有問題,出現統計子節點出現計算錯誤 var mixedcollection s.queryexact parent record.get id 這個時候就要重寫store中原的的方法query了 store中原...

C 中擴充套件方法

什麼是擴充套件方法?擴充套件方法顧名思義,就是允許向現有的 型別 新增方法,而無需建立派生類 重新編譯或以其他方式修改原來型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。擴充套件方法和例項方法有何區別?通常只有在不得已 例如 不能修改原來的型別 的情況下才實現擴...