首頁 >後端開發 >php教程 >PHP實現的最大正向匹配演算法範例講解

PHP實現的最大正向匹配演算法範例講解

jacklove
jacklove原創
2018-07-05 17:47:151775瀏覽

這篇文章主要介紹了PHP實現的最大正向匹配演算法,簡單描述了最大正向匹配演算法的概念、原理並結合實例形式分析了php實現與使用最大正向匹配演算法的相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP實現的最大正向匹配演算法。分享給大家供大家參考,具體如下:

正向最大匹配演算法:從左到右將待分詞文字中的幾個連續字元與詞表匹配,如果匹配上,則切分出一個字。但這裡有一個問題:要做到最大匹配,並不是第一次匹配到就可以切分的 。

函數包含三個參數:

$query   查詢單字
$dict    字典
#$max_len 最大長度(這裡預設值設定為15)

字典範例:

#
$dict = array(
  '脚本之家'=>'脚本之家',
  '脚本下载'=>'脚本下载',
  'JS编程'=>'JS编程'
);

函數定義:

##

/*
 * $query 查询词
 * $dict 词典
 * $max_len 最大长度
 */
function extractWords($query,$dict,$max_len=15){
    $feature = "";
    $slen=mb_strlen($query,'UTF8');
    $c_bg = 0;
    while($c_bg<$slen){
      $matched = false;
      $c_len =(($slen-$c_bg)>$max_len)?$max_len:($slen-$c_bg);
      $t_str = mb_substr($query, $c_bg,$c_len,&#39;UTF8&#39;);
      for($i=$c_len;$i>1;$i--){
        $ttts = mb_substr($t_str, 0,$i,&#39;UTF8&#39;);
          if(!empty($dict[$ttts])){
//          echo &#39;matched = &#39;.$ttts.PHP_EOL;
            $matched = true;
            $c_bg += $i;
            if(!empty($feature)){
              $feature.=",";
            }
            $feature.=$ttts;
            break;
          }
      }
      if(!$matched){
        $c_bg++;
      }
    }
    echo $feature.PHP_EOL;
}

使用方法:

$query=&#39;欢迎访问脚本之家!脚本之家是国内专业的网站,提供各种脚本下载及JS、Python、php等编程资料&#39;;
extractWords($query,$dict);

執行結果:

脚本之家,脚本之家,脚本下载

您可能感興趣的文章:

PHP效能分析工具xhprof的安裝使用與相關的注意事項

php封裝db類別連接sqlite3資料庫的方法實例講解

#PHP實作模擬http請求的方法分析解說

PHP實作模擬http請求的方法分析解說

############

以上是PHP實現的最大正向匹配演算法範例講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn