一、智慧搜索
搜索引擎如谷歌、百度等成了人們訪問互聯網離不開的助手。遺憾的是,盡管用戶每天在使用搜索引擎,但是對搜索的抱怨也總是不斷。因為每次搜索的結果,有“精華”也有“糟粕”,有自己所要的信息也有和自己目標完全無關的東西。
例如,我們查詢“長城”,本意是查詢著名的萬里長城,結果如圖1所示。
這里,出現了諸如“長城集團”“長城電腦”和“長城中文學?!钡刃畔?,其實,這都不是用戶想要的。而用戶真正想要的是關于萬里長城以及更豐富的相關信息,諸如:長城是何時建的,是否列入世界七大奇跡,其他名列世界七大奇跡的是哪些?等等。這些,搜索結果里卻看不到。如何解決這個問題,是一個大挑戰。
問題的核心是,目前的搜索系統忽視了用戶請求的語義,也忽視了搜索對象-網絡文檔的語義。搜索系統只是按照文檔中是否有要查詢的詞匯(如“長城”)去搜索互聯網,而不管這個詞匯的語義。其實,“長城”一詞可以表示我國偉大的古代建筑“萬里長城”,可以是一個汽車廠商的名字,一所學校的名字,一個IT企業(長城計算機公司)的名字,也可以是一個商標。
簡言之,它可以描述一個建筑物,屬于概念“建筑”;可以是某個企業的名字,屬于概念“企業”;也可以是一個商標,屬于概念“商標”.
一個智慧搜索系統要能夠理解用戶請求所代表的含義,進一步,能自動區分其語義并按此語義以及用戶需求的語義實施搜索。這就是智慧搜索的任務。
更進一步,不同于傳統的數據庫查詢,網絡搜索的一個特點是,用戶往往一下子不能完全表達自己的需求,而是通過和搜索引擎的多次交互、逐步逼近(通過詢問,用戶察看返回結果,然后重新構造詢問,搜索引擎返回搜索結果……這樣,多次交互),才能基本達到用戶請求的目標。結果,效率很低。假如,搜索系統能夠在用戶第一次提出查詢請求時,就通過大數據分析洞察其含義,對查詢表達式自動做語義擴展,一次中的,就可大大提高效率,減輕用戶負擔。
同時,在缺乏語義支持的情況下,大家公認的關于搜索性能的2個核心考核指標,查準率和查全率,目前的搜索系統也并不令人滿意。
以查全率為例,舉例來說,用戶查詢“政治局”,目前的搜索引擎返回的是含有這個詞的網頁的URI.那么,一個網頁中沒有這個詞,但卻有具體的政治局委員、常委成員的信息,這類的網頁都會被目前搜索引擎所忽略。例如,如果一個網頁中沒出現“政治局”這個詞,但它報道的內容卻是上海市委書記韓正的活動。按用戶的本義,搜索引擎也應當返回其對應的URI,因為上海市委書記韓正是政治局委員,這類網頁的信息也是用戶需要的。一個支持語義查詢的智慧搜索應當有這個功能。為了解決這個問題,需要大數據分析的支持。
為了便于分析,將一個搜索引擎的基本結構圖示如圖2.
如圖2,用戶的搜索請求以查詢表達式(QueryExpression)形式出現。從現有使用規律的統計數據看,搜索請求表達式里包含的詞匯一般在2、3個詞之內,大多數用戶使用的是一個詞(如“長城”)。詞匯之間可用邏輯算子(如“與”“或”)關聯,如“長城∧中國”.
搜索引擎的用戶接口系統(Query Interface)接收到用戶的查詢表達式后會轉交給搜索引擎內核(SearchEngine Kernel),搜索引擎內核先查閱本地文檔索引,發現后將和該詞匯的索引關聯的文檔交給排序模塊,排序后返回給用戶接口系統。其中,爬蟲系統(Spider)不停地從網上抓取網頁,存入本地文檔庫(Corpus),同時自動提取索引(Index),寫入索引系統。
2011年起,在上海市科委的支持下,華東師范大學計算機應用研究所著手研制開發一個基于大數據分析的智慧搜索引擎,名為SmartSearch.其第一個用戶是上海電信旗下的門戶網-上海熱線(圖3是其用戶界面)。
如圖3,SmartSeach的搜索輸入框下,有可選的三個搜索元:Google、Bing和Nutch.它們可區分為元搜索與直接搜索兩種。利用現有搜索引擎(如Google、Bing)做初始搜索,然后進行加工處理的搜索方式,學術上稱為元搜索(meta search)。這里,搜索元Google和Bing表示相應的元搜索-谷歌搜索與微軟搜索;而Nutch指的是SmartSeach自身的直接搜索,如此取名是因為SmartSeach采用開源軟件Nutch實現網絡數據抓取。
SmartSearch允許用戶單獨使用元搜索、直接搜索或兩者結合的混合搜索來獲取數據。
為了解決語義缺失問題,SmartSearch首先要分析用戶請求的詞屬于哪個概念,如“長城”屬于建筑、企業名稱還是商標;再如,“病毒(Virus)”是屬于醫學概念還是信息概念,要達到這個目標就需要大數據的支持。
簡言之,通過大數據分析,系統自動將用戶請求的詞匯,綁定到相應概念上去。我們用映射1和2來表示:
這里涉及的大數據包括歷來的用戶請求與返回結果的滿意度、用戶使用的歷史數據(即Cookie數據)和用戶的行為特征等。
SmartSearch的用戶接口提供的智能功能包括:
1.將一個查詢詞匯綁定到一個特定概念或對象,例如,提供一個查詢接口:
Great Wall &
Great Wall &