Maison  >  Article  >  développement back-end  >  Un exemple de l'algorithme de correspondance maximale implémenté en PHP

Un exemple de l'algorithme de correspondance maximale implémenté en PHP

jacklove
jackloveoriginal
2018-07-05 17:47:151751parcourir

Cet article présente principalement l'algorithme de correspondance maximale implémenté en PHP, décrit brièvement le concept et le principe de l'algorithme de correspondance maximale et analyse les techniques de fonctionnement associées à la mise en œuvre et à l'utilisation de l'algorithme de correspondance maximale en PHP sous la forme de exemples. Les amis dans le besoin peuvent se référer à

Cet article décrit l'algorithme de correspondance maximale implémenté en PHP. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Algorithme de correspondance maximale avant : Faites correspondre plusieurs caractères consécutifs dans le texte à segmenter avec la liste de mots de gauche à droite. S'il y a une correspondance, alors un mot est segmenté. Mais il y a ici un problème : pour obtenir une correspondance maximale, il n'est pas possible de diviser la première correspondance. La fonction

contient trois paramètres :

$query Mot de requête
$dict Dictionnaire
$max_len Longueur maximale (ici la valeur par défaut est fixée à 15)

Exemple de dictionnaire :

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

Définition de la fonction :

/*
 * $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;
}

Utilisation :

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

Résultat de l'exécution :

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

Articles qui pourraient vous intéresser :

Installation et utilisation de l'outil d'analyse des performances PHP xhprof et précautions associées

Un exemple d'explication de la méthode d'encapsulation php de la classe db pour se connecter à la base de données sqlite3

Une analyse et une explication de la méthode de PHP implémentant une requête http simulée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn