麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

Thinkphp 3.2 中詞分詞 加權搜索

2020-03-22 20:24:42
字體:
來源:轉載
供稿:網友
  •  原文地址:http://www.cnblogs.com/kekukele/p/4544349.html

     前段時間,利用業余時間做了一個磁力搜索的網站Btdog,其中使用到了簡單的中文分詞與加權搜索,在這里分享給大家,供大家參考。

      在我的網站中,中文分詞使用的是SCWS分詞系統,這個分詞系統提供PHP兩種使用方式:一種是你可以采用源碼安裝,具體安裝步驟請參考這里;

    另外一種是使用其提供的API接口,具體方法參考這里。

      下面,我們假設你已經掌握了SCWS的使用,事實上,其使用也非常簡單,若你不會其使用,也不影響本文下面的閱讀。 

      SCWS系統中其每個分好的詞包括以下屬性/鍵值:

      word詞的內容off該詞在未分詞文本中的偏移位置idf該詞的 IDF 值attr詞性 (北大標注格式)參見這里。

        在這里我們重點介紹下分詞屬性中的idf,這個是我們在我們的分詞算法中需要用到的。

        IDF全稱inverse document frequency(逆向文檔頻率)是一個詞普遍重要性的度量,某一特定詞的IDF值,用總文件數除以包含該詞的文章數量,再將得到的商取對數(log)。計算公式:IDF = log(D/Dt),D為文章總數,Dt為該詞出現的文章數量。IDF的主要思想是:如果包含詞條t的文檔越少,也就是Dt越小,IDF越大,則說明詞條t具有很好的類別區分能力。

        我們舉例說明下,如 搜索內容 ”復仇者的聯盟“,其SCWS的分詞結果如下:

        可以看出,其分詞結果中,關鍵詞”復仇者“的idf為9.06,最具區分能力,而關鍵詞”的“的idf值為0,基本沒有區分能力,”聯盟“的idf為4.34也具有較強的區別能力。因此,我們在我們的分詞搜索中,可以簡單地使用idf值作為加權排序的依據。

        在scws分詞系統中,其idf的取值為0-10,因此在我們下面給出的算法中,我們把內容全文匹配的權重設為10,即最大。其他分詞后關鍵詞的權重值設為其idf值,然后根據權重大小將結果逆序排列。這要我們就實現了簡單的中文分詞加權排序。核心代碼具體如下: 

      //@param:需要分詞的內容  
      //Return:mysql查詢條件字符串,加權排序字符串,關鍵詞

      private function split_words($text){ $split_words = scws_new(); $split_words->set_charset('utf-8'); $split_words->set_ignore(true); $split_words->set_dict('/usr/local/scws/etc/dict.utf8.xdb'); $split_words->set_rule('/usr/local/scws/etc/rules.utf8.ini'); $split_words->send_text($text); $weight=10; $condition['where'] = "name LIKE '%".$text."%'"; $condition['order'] = "(CASE WHEN name LIKE '%".$text."%' THEN $weight ELSE 0 END)"; //設置全文匹配最大權重 while ($words_result = $split_words->get_result()) { foreach($words_result as $word_arr){ $condition['where'] .= " OR name LIKE '%".$word_arr['word']."%'";
                  //設置分詞后關鍵詞的權重為其idf的值
      $condition['order'] .= " + (CASE WHEN name LIKE '%".$word_arr['word']."%' THEN ".$word_arr['idf']." ELSE 0 END)"; $condition['keywords'][$cnt++] = $word_arr['word']; } } $split_words->close(); return $condition; }

        當然,更復雜的分詞還要考慮詞的詞頻TF,不過即使簡單的這樣,我們也基本能達到比較好的效果了,具體效果,大家可以到http://btdog.com.cn體驗下。

      PHP編程

      鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 午夜久久久久 | 久草导航 | 欧美不卡三区 | 国产一级一片免费播放 | 亚洲一区二区在线免费 | 亚洲精品a级 | 男女羞羞视频在线免费观看 | 久草最新网址 | 斗破苍穹在线免费 | 国产午夜亚洲精品午夜鲁丝片 | 毛片成人 | 久久精品re| 福利一区二区三区视频在线观看 | 精品999久久久 | 澳门一级淫片免费视频 | 性猛aa久久久 | 国产精品久久久久久久久久东京 | 国产成人精品一区二区视频免费 | 亚洲午夜精品视频 | 成人一级视频 | 成人午夜视频免费在线观看 | 免费在线观看国产精品 | 亚洲小视频在线观看,com | 国产自91精品一区二区 | 多人乱大交xxxxx变态 | 欧美性色生活片免费播放 | 99riav视频一区二区 | 精品一区二区电影 | 91黄瓜视频| 国内毛片视频 | 国产亚洲精品久久久久婷婷瑜伽 | 一级电影在线观看 | 鲁丝一区二区二区四区 | 综合97| 久久网站免费 | 亚洲一区免费观看 | 精品成人久久久 | 欧美特级一级毛片 | 一级电影中文字幕 | 国产88久久久国产精品免费二区 | 国产自在线|