技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 排头兵PHP中文分词,纯PHP版实现

排头兵PHP中文分词,纯PHP版实现

浏览:2634次  出处信息
PHP中文分词类,主要作用是分析语料库,找出核心主题词,是网页相似度引擎的子模块

相比成熟的分词类库,如Lucene,中科院之流 没有任何优势,本类库是实验性项目,效率及算法[trie]并无特殊

暂时支持utf8编码

线上测试版即将出来 http://www.paitoubing.cn/pdb/paiswc.php
ps:我的博客托管服务器,暂时不能访问外网,没法安装apc扩展……..

先贴上切词函数,目前只能识别数据字典的词条分词,其他方面的可以扩展.
Trie数据字典保存在apc共享缓存中,根据词条首字母$key 序列化$value 了trie子树,序列化的效率真他妈低,影响了整体分词的效率

 
以下是代码片段:
$result =’’;
function pai_scw($text="")
{
    global $result;
    $textlen = mb_strlen($text);
    $trienode = false;
    $find = array();
    $wordrootposition = 0;//词根位置
         $prenode = false;
    $word = ’’;
    for ($i = 0; $i < $textlen;$i++)
    {
        $character = mb_substr($text,$i,1);
        $success = false;
        if(empty($word))
        {
            $trienode = unserialize(apc_fetch($character,$success));
            //unserialize 效率低
 
            //当$character 没有一个可以匹配的字符时,直接跳过,不做倒退匹配
            if(!$success)
            {
                continue;
                $result = $result.$character;
            }
        }
        //匹配词首
        if($success)
        {
            $word = $word .$character;
            continue;
        }
 
        if(isset($trienode[’c’][$character]))
        {
            $word = $word .$character;
          //  echo "isset".$word."\n";
            $trienode = $trienode[’c’][$character];
            if($prenode == 0)
            {
                $wordrootposition = $i;
            }
            $prenode = true;
            if($trienode[’w’])
            {
            $find[] = array(’position’=>$wordrootposition,’word’ =>$word);
                $result = $result."-".$word."-";
            }
        }
        else 
        {
 
            /*@example 词条:北京奥委会
             *@example 判断分词:北京 奥运
             *@example 应该回溯到位置 奥的位置
             */
 
            $i = $i - mb_strlen($word);
            $prenode = false;
            $word = ’’;
            //添加分词结果
            $result = $result.$character;
        }
    }
    return $find;
}

建议继续学习:

  1. 怎样用好Google进行搜索    (阅读:14393)
  2. 淘宝搜索:定向抓取网页技术漫谈    (阅读:8028)
  3. 简析搜索引擎中网络爬虫的搜索策略    (阅读:5653)
  4. 几种常见的基于Lucene的开源搜索解决方案对比    (阅读:4484)
  5. 一个简单的中文分词程序    (阅读:4461)
  6. 用Sphinx快速搭建站内搜索功能    (阅读:4251)
  7. 基于用户行为分析的搜索引擎自动性能评价    (阅读:4120)
  8. 互联网网站的反爬虫策略浅析    (阅读:4006)
  9. 附近地点搜索初探    (阅读:3997)
  10. 漫话中文分词算法    (阅读:3920)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1