置頂 搜尋引擎 一種提示詞推薦演算法

2021-07-08 15:39:32 字數 1444 閱讀 9411

搜尋引擎可以說目前所有網際網路應用裡技術含量最高的一種。儘管應用形式比較簡單:使用者輸入查詢詞,搜尋引擎返回搜尋結果。但是,搜尋引擎需要達到的目標:更全、更快、更準。如何讓搜尋結果更準確始終是搜尋引擎的一大難題。

公司最近在開發某行業的垂直搜尋引擎,我作為該專案組的核心成員主要是負責核心演算法的研究工作。我也是剛開始接觸這個行業,目前還處於摸索階段,還有很長的路要走。

言歸正傳,先談一下這個專案的背景。這個專案是乙個行業性質的垂直搜尋引擎。使用者分為兩大類:普通使用者、專業使用者。整個專案分為:爬蟲技術組,引擎組,大資料分析組和演算法組。引擎的爬蟲、詞庫的建立和引擎的選型都不是本文的重點,就一筆帶過,重點在於推薦演算法的設計。

一、網路爬蟲

系統的資料,需要從幾個專業**進行抓取。嘗試了幾個爬蟲,最後選取heritrix最為我們的爬蟲框架,選取它的原因主要是感覺配置項雖然多,但是比較靈活,特別適合我們的要求。當然,爬從技術組也自己嘗試實現了乙個爬蟲,主要是爬取位址比較固定幾種資料。

二、詞庫的建立

詞庫初步分為專業主題詞、行業普通詞庫、一般通用詞庫、廢詞庫、還有用於感情分析的詞庫。

專業詞庫的實現前期是採取人工的方式來處理的,並製作了若干的輔助工具,供專業人員來挑選、合併、刪除主題詞的操作。

後面幾種詞庫的實現,是先選用了搜狗等幾種輸入法的詞庫庫為基礎,在這些詞庫的基礎上對爬蟲爬出來的文件進行向量化。

三、引擎的搭建

通過對採集的資料進行去噪、分段、特徵提取,然後把相應的資料匯入到solr裡。

四、推薦演算法

從向量化的角度來看,每一篇文件都對應乙個向量

1,我們只取了詞、詞的位置。我們先用分類規則,把文件分成若干類,基於每一類進行如下計算:

我們定義一下距離公式

我們對於每個文件的特徵項,兩兩求出特徵項的相似度。通過這個距離公式

我們可以得出,對於每乙個分類,以這些特徵項為頂點,以相似度距離為邊,就構

成了如下的無向圖。

模擬於wordnet和知網的

hownet

,我們稱這個無向圖,為lawnet。

那我們的設想問題就轉化為:選取任意乙個頂點,找出若干個(譬如10

個)由這些頂點組成的最小生成樹或者邊權之和最小的最小子圖。這是乙個區域性最優的隨機問題。也就是說,我們只需要滿足使用者認可的體驗程度即可,如果概率為90%

,也就是說,當使用者輸入

10000

次,我們能成功給出

9000

次的提示詞就行了。

目前的解法我嘗試了兩種:

一種prim

演算法。

第二種演算法:先通過floyd

演算法,算出任意兩點的最短距離,作為乙個邊;這些邊就組合成乙個集合。然後給任意的頂點,從這個邊集合裡找出包含這個頂點的前

n個最小邊。

Trie樹 實現搜尋引擎的搜尋關鍵詞提示功能

快速查詢某個字串的功能。比如,我們有6個字串,它們分別是 how,hi,her,hello,so,see。我們希望在裡面多次查詢某個字元是否存在。我們可以先對這6個字串做一下預處理,組織成trie樹的結構,之後每次查詢,都是在trie樹中進行匹配查詢。trie樹的本質,就是利用字串之間的公共字首,將...

一種模糊查詢,應用搜尋引擎的分詞機制

說明工作原理 例子 對於查詢 我可以理解你嗎 拆分為 我可 可以 以理 理解 解你 你嗎 查詢到兩個符,則權值加上相應的值 我可 1,可以 2,以理 3,理解 4,解你 5,你嗎 6.以下為mysql的儲存過程 create definer root localhost procedure proc...

一種面向搜尋引擎的中文切分詞方法

首先說一下搜尋引擎切分詞的產生的原因。在進行全文檢索時,首先將要檢索的內容分割成較短的文字序列。然後生成在每個文字序列中所包含字串的對應表 索引 當輸入檢索語句後,也同樣進行分割,與索引進行比較。也就是說,兩者即使包含有同樣的文字排列,但分割方法不同的話也不能正確檢索。文字的分割方法主要有兩種,分別...