六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 102|回复: 0

PHP中文分词

[复制链接]

升级  33.33%

92

主题

92

主题

92

主题

举人

Rank: 3Rank: 3

积分
300
 楼主| 发表于 2012-10-23 22:35:46 | 显示全部楼层 |阅读模式
最常见的词语二分法:
$str = '这是我的网站www.7di.net!';  //$str = iconv('GB2312','UTF-8',$str);  $result = spStr($str);  print_r($result);    /**  * UTF-8版 中文二元分词  */  function spStr($str)  {      $cstr = array();        $search = array(",", "/", "\\", ".", ";", ":", "\"", "!", "~", "`", "^", "(", ")", "?", "-", "\t", "\n", "'", "<", ">", "\r", "\r\n", "{1}"", "", "%", "#", "@", "+", "=", "{", "}", "[", "]", ":", ")", "(", ".", "。", ",", "!", ";", "“", "”", "&lsquo;", "&rsquo;", "[", "]", "、", "&mdash;", " ", "《", "》", "-", "&hellip;", "【", "】",);        $str = str_replace($search, " ", $str);      preg_match_all("/[a-zA-Z]+/", $str, $estr);      preg_match_all("/[0-9]+/", $str, $nstr);        $str = preg_replace("/[0-9a-zA-Z]+/", " ", $str);      $str = preg_replace("/\s{2,}/", " ", $str);        $str = explode(" ", trim($str));        foreach ($str as $s) {          $l = strlen($s);            $bf = null;          for ($i= 0; $i< $l; $i=$i+3) {              $ns1 = $s{$i}.$s{$i+1}.$s{$i+2};              if (isset($s{$i+3})) {                  $ns2 = $s{$i+3}.$s{$i+4}.$s{$i+5};                  if (preg_match("/[\x80-\xff]{3}/",$ns2)) $cstr[] = $ns1.$ns2;              } else if ($i == 0) {                  $cstr[] = $ns1;              }          }      }        $estr = isset($estr[0])?$estr[0]:array();      $nstr = isset($nstr[0])?$nstr[0]:array();        return array_merge($nstr,$estr,$cstr);  }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表