ホームページ  >  記事  >  バックエンド開発  >  PHP で実装された最大前方一致アルゴリズムの例

PHP で実装された最大前方一致アルゴリズムの例

jacklove
jackloveオリジナル
2018-07-05 17:47:151757ブラウズ

この記事では、主に PHP で実装された最大前方マッチング アルゴリズムを紹介し、最大前方マッチング アルゴリズムの概念と原理を簡単に説明し、PHP での最大前方マッチング アルゴリズムの実装と使用に関連する操作テクニックを次の形式で分析します。

この記事の例では、PHP に実装された最大前方一致アルゴリズムについて説明します。詳細は次のとおりです:

前方最大一致アルゴリズム: 分割するテキスト内の複数の連続する文字を単語リストと左から右に一致させます。一致するものがあれば、単語はセグメント化されます。しかし、ここには問題があります。最大の一致を達成するために、最初の一致を分割することはできません。

関数には 3 つのパラメータが含まれています:

$query クエリ単語
$dict Dictionary
$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 で実装された最大前方一致アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。