知乎中的「近義詞」(三):讓搜索更智能

之前為了方便對知識的搜索,做了個搜索引擎。但是其中的演算法非常基礎,經常在需要裝逼的時候搜不到,比如有次想搜火車的座位排布,結果搜「火車」,或者「鐵路」,弄死搜不到。這真是令人尷尬。後來過了好久才發現其實那個答案裡面提到的是「高鐵」。從那以後就在想,要是搜索引擎能更智能一點,哪怕你輸入的關鍵字是「火車」,也能搜到「高鐵」就好了。最近做了一些針對知乎「近義詞」的工作,正好可以用到搜索裡面來。

老規矩,先上demo。zhihu.grapeot.me/retrie

這個demo用的是一個非常小的資料庫,只有150個文檔。文檔的具體內容在這裡:zhihu.grapeot.me/text.t。主要是想演示一下如果我們用A做關鍵字,在A不太能搜到的情況下,能不能把和A相關的B關鍵字也匹配上。

試試看搜索「火車」,現在能出來和高鐵相關的內容了!

而如果搜索「痛苦」的話(鏈接),也會出現含有「絕望」,「苦難」等字眼的文檔。

這個搜索引擎還有一個比較意外的功用是,可以搜索一些相對模糊或者抽象的關鍵字,把相關的內容全部搜出來。比如如果我們搜索語言(鏈接),可以看到結果里包含了漢語,英語,日語,甚至滿語和象形文字的內容。而更神奇的是,大部分結果都並沒有「語言」這個詞。知乎官方最近做的話題索引功能,其實非常適合用這個東西來自動抓取,供人工迅速編輯呢。

總的來說,相比於傳統的按詞匹配的搜索引擎,加入了神經網路以後的智能搜索引擎可以在詞-文檔,文檔-文檔乃至標籤-文檔之中建立更為緊密的聯繫。這一方面可以幫助用戶在不太記得關鍵字的情況下仍然完成搜索,一方面可以構建一個知識網路,從而進行很多其他的智能應用。現在我們的demo系統還有一些問題,比如用戶搜索「英語」,我們會返回和搜索「語言」完全相同的結果。這是因為語料庫以及模型規模還太小,沒有學出來"英語"和"語言"其實是不同的東西。在實際的大語料庫中可以比較簡單地改善。

這個系統目前已經在一些投資公司里應用了。比如看項目書,看到無人機的項目,這個引擎會自動推薦更多的無人機的項目,幫助橫向比較。這樣基金經理就可以在不喪失系統性的情況下,大量瀏覽項目書,得出一個整體印象。類似的應用還有很多,我們也已經開發出了一個漢語Search Engine as a Service的服務。用戶提交一個文本文件,我們就可以自動進行索引,並提供智能搜索服務。有意思的應用以及前景都是很廣闊的。


推薦閱讀:

挖掘數據價值,從用戶分群開始
沒人帶的數據分析師能做嗎?
搜狗圖片搜索中高質量相關結果挖掘方法
數據科學資料整理
數據嗨客 | 第1期:5分鐘包你看懂「機器學習」

TAG:数据挖掘 | 机器学习 | 搜索引擎 |