1. 程式人生 > >查詢理解(Query Understanding)—查詢改寫總結

查詢理解(Query Understanding)—查詢改寫總結

查詢改寫(Query Rewriting)的總結

目前為止,我們只是專注於字元級別和字塊級別的查詢理解,現在我們轉向對實體和查詢本身的理解。在這個級別上,最強大的查詢理解技術就是我們稱之為查詢改寫的一大類策略。查詢改寫會自動轉換和改寫使用者搜尋查詢語句,以便更好地表示搜尋者的意圖。查詢改寫的策略通常有兩個目的:增加召回率(recall)和提高精確度(precision)。 這篇文章提供了查詢改寫的概述,下面我們將深入探討具體技術的細節。

提高召回率(increasing recall)

在搜尋查詢中的查詢改寫的關鍵方法是檢索更大的相關結果集。在極端情況下,增加召回率是指返回一些結果(希望相關)和返回無結果之間的差異。增加召回率的兩個主要查詢改寫寫策略是查詢擴充套件(Query Expansion)和查詢化簡(query relaxation)。

查詢擴充套件(Query Expansion)

查詢擴充套件通過新增其他詞塊標記或短語來擴充套件現有查詢。這些額外的資訊可能與原始查詢術語相關,如同義詞或縮寫(我們將在後面的文章中討論如何獲取這些資訊)。或者可以使用我們在之前介紹的詞幹和拼寫糾正方法來獲得。

如果原始查詢是詞塊的AND表示,則查詢擴充套件將其替換為AND兩邊的或(OR)關係。例如,如果對於查詢“ip lawyer”,最初檢索的文件包含“ip”和“lawyer”,擴充套件查詢可能會檢索包含 “ip”或“intellectual property”,以及“lawyer”或“attorney”。

查詢擴充套件不僅對提高召回率非常有價值,它也可以提高精確度。使用擴充套件標記的匹配可能比限制在原始查詢標記的匹配更相關。此外,擴充套件術語也可作為部分資訊來提高查詢結果排序。

查詢簡化(query relaxation)

查詢簡化與查詢擴充套件正好相反:不是向查詢新增標記,而是刪除一些無用詞或字元。具體而言,查詢簡化通過刪除(或可選)標記來增加召回率,這可能不是確保相關性所必需的。例如,對於查詢“cute fluffy kittens” ,返回結果可能只會匹配“fluffy kittens” 。

查詢化簡是一個非常樸素的方法,例如檢索與除了一個查詢塊之外的所有查詢塊匹配的文件。這種樸素的方法關鍵是怎麼選擇一個查詢塊才能更準確的表示查詢意思。例如用“cute fluffy”替換“cute fluffy kittens” 。更復雜的查詢簡化策略是使用查詢解析或分析來識別查詢中的主要概念,然後選擇用作修飾符的單詞。

查詢擴充套件和查詢簡化都旨在增加召回率而不會犧牲太多的精確度。通常,隨著原始查詢的結果集的增長,我們應該對查詢擴充套件(尤其是查詢化簡)越來越保守。

提高精確度(Increasing Precision)

查詢改寫也可用提高精確度的方法 - 即減少不相關結果的數量。提高召回率最重要的是避免出現太少或空的結果集,提高精確率最重要的是避免出現太大或雜亂的結果集。

查詢分割或分詞(Query Segmentation)

有時多個詞塊代表單個語義單元,比如在查詢語句“white dress shirt” 中的“dress shirt”。將此分塊作為引用短語處理,如將查詢重寫為 white “dress shirt” 可以顯著提高精確度,避免匹配 white shirt dresses 等。

查詢分割(segmentation)與標記詞塊( tokenization)有關:我們可以將這些分割快視為較大的標記詞塊。我們通常認為標記詞塊是字元級的查詢分割是標記詞塊級別。我們將在以後的文章中討論查詢分割演算法。

查詢範圍(Query Scoping)

一般文件都是有結構的,正常文章有標題和作者,產品有分類和對應品牌等。查詢改寫可以通過確定或限制查詢範圍,使不同的查詢匹配文件的不同部分,從而來提高精度度。 查詢範圍通常依賴於查詢分段或分塊,我們確定每個查詢分段的實體型別,然後根據實體型別和文件欄位之間的關聯來限制匹配。 查詢改寫還可以在查詢級別執行範圍限制,例如將整個結果集限制為單個類別,這種限定範圍通常被視為分類問題。

查詢改寫的意義(The Power of Query Rewriting)

查詢改寫是一種功能強大的工具,它可以幫助我們對查詢更好的理解,從而提高查詢的召回率和精確率。目前搜尋引擎試圖通過排名解決的許多問題,現在應該可以通過不同的查詢改寫方法來解決其中一部分。