PHP使用中文分詞初步接觸

     PHP使用中文分詞學習

       因工做上須要,要求在excel表格提交後,對其中的數據進行自動識別,先根據條形碼一欄和模板庫裏的商品進行比對,如果沒有條形碼,則根據輸入的商品名進行比對,此時就須要使用中文分詞技術。算法

    中文分詞

       所謂的中文分詞(Chinese Word Segmentation) ,既CWS指的是將一個漢字序列切分紅一個一個單獨的詞。咱們知道,在英文的行文中,單詞之間是以空格做爲分界符的,而中文只是字、句和段能經過明顯的分界符來簡單劃界,惟獨詞沒有一個形式上的分界符,雖然英文也一樣存在短語的劃分問題,不過在詞這一層上,中文比之英文要複雜的多、困難的多。數據庫

     分詞技術

       分詞技術就是搜索引擎針對用戶提交查詢的關鍵詞串進行查詢處理後,根據用戶的關鍵詞串用各類匹配方法進行的一種技術。學習

    工做原理

       那麼分詞技術是如何在查詢處理時工做的呢?很簡單,首先若是用戶提交的字符串沒有超過3箇中文字,就會直接到數據庫索引詞彙。超過4箇中文字的,首先用分隔符好比空格,標點符號,將查詢串分割成若干子查詢串。舉個例子。「什麼是黃燜雞米飯」 咱們就會把這個詞分割成「 什麼是,黃燜雞,米飯。」這種分詞方法叫作反向匹配法。而後再看用戶提供的這個詞有沒有重複詞彙,若是有的話,會丟棄掉,默認爲一個詞彙。接下來檢查用戶提交的字符串,有沒有字母和數字。若是有的話,就把字母和數字認爲一個詞。這就是搜索引擎的查詢處理。大數據

    分詞算法分類

    廣義上咱們將現有的分詞算法分爲三類:搜索引擎

  1. 字符串匹配的分詞方法;
  2. 詞義分詞法;
  3. 統計分此法。 

    字符串匹配法

    又叫作機械分詞方法,是最經常使用的分詞方法,百度使用的就是此種方法。經常使用的分爲如下幾種:人工智能

  • 正向最大匹配法

        什麼意思呢?就是把一個詞從左至右來分詞。舉個例子:「不知道你在說什麼」,這句話採用正向最大匹配法是如何分的呢?「不知道,你,在,說什麼」。spa

  • 逆向最大匹配法

        經過上面的例子可知,反向最大匹配法來分上面這段是如何分的:「不,知道,你在,說,什麼」,這個就分的比較多了,反向最大匹配法就是從右至左。excel

  • 最少切分法

        也能夠叫作最短路徑分詞法。這個怎麼理解呢 ,就是說,我一段話裏面要求切出的詞數是最少的。索引

        仍是上面哪句話:「不知道你在說什麼」 最短路徑分詞法就是指,我把上面哪句話分紅的詞要是最少的。不知道,你在,說什麼,這就是最短路徑分詞法,分出來就只有3個詞了 。好了,固然還有上面三種能夠相互結合組成一些分詞方法。好比正向最大匹配法和反向最大匹配法組合起來就能夠叫作雙向最大匹配法。開發

  • 雙向最大匹配法

            就是進行由左到右、由右到左兩次掃描,以提升精確度。

    詞義分詞法

        這種分詞方法是讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它一般包括三個部分:分詞子系統、句法語義子系統、總控部分。目前來講這種方法還不成熟,可是我的見解是,隨着人工智能熱潮的到來,伴隨着大數據分析以及deep learning的發展,將來的分詞引擎處理極有可能會被人工智能AI所替代。

    統計分詞法

        就是根據詞組的統計,就會發現兩個相鄰的字出現的頻率最多,那麼這個詞就很重要。就能夠做爲用戶提供字符串中的分隔符。這樣來分詞。好比,「個人,你的,許多的,這裏,這一,那裏」。等等,這些詞出現的比較多,就從這些詞裏面分開來。

        由於這次的項目只是須要商家自行導入商品信息,經過後臺比對後顯示商品,因此我選擇了第一種的分詞方法,同時開發環境是PHP,爲了方便維護,選用了SCWS做爲中文分詞引擎。

相關文章
相關標籤/搜索