“懒人”的做法——用PHP简易实现中文分词

2016-01-29 13:23 19 1 收藏

“懒人”的做法——用PHP简易实现中文分词,“懒人”的做法——用PHP简易实现中文分词

【 tulaoshi.com - PHP 】

作者: Maco 

 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

hehe, 用javascript:;">PHP去做中文分词并不是一个太明智的举动, :p

下面是我根据网上找的一个字典档, 简易实现的一个分词程序.

(注: 字典档是gdbm格式, key是词 value是词频, 约4万个常用词)

完整的程序演示及下载请参见: http://root.twomice.net/my_php4/dict/chinese_segment.php

<?php
//中文分词系统简易实现办法
//切句单位:凡是ascii值<128的字符
//常见双字节符号:《》,。、?“”;:!¥…… %$#@^&*()[]{}|\/"'
//可以考虑加入超常见中文字: 的 和 是 不 了 啊 (不过有特殊字比如 "打的" "郑和" .. :p)

//计算时间
function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();


//词典类
class ch_dictionary {
    var $_id;

    function ch_dictionary($fname = "") {
        if ($fname != "") {
            $this-load($fname);
        }
    }

    // 根据文件名载入字典 (gdbm数据档案)
    function load($fname) {
        $this-_id = dba_popen($fname, "r", "gdbm");
        if (!$this-_id) {
            echo "failed to open the dictionary.($fname)<brn";
            exit;
        }
    }

    // 根据词语返回频率, 不存在返回-1
    function find($word) {
        $freq = dba_fetch($word, $this-_id);
        if (is_bool($freq)) $freq = -1;
        return $freq;
    }
}

// 分词类: (逆向)
// 先将输入的字串正向切成句子, 然后一句一句的分词, 返回由词组成的数组.
class ch_word_split {
    var $_mb_mark_list;    // 常见切分句子的全角标点
    var $_word_maxlen;    // 单个词最大可能长度(汉字字数)
    var $_dic;        // 词典...
    var $_ignore_mark;    // true or false
   
    function ch_word_split () {
        $this-_mb_mark_list = array(","," ","。","!","?",":","……","、","“","”","《","》","(",")");
        $this-_word_maxlen  = 12;    // 12个汉字
        $this-_dic = NULL;
        $this-_ignore_mark = true;
    }

    // 设定字典
    function set_dic($fname) {
        $this-_dic = new ch_dictionary($fname);
    }

    function set_ignore_mark($set) {
        if (is_bool($set)) $this-_ignore_mark = $set;
    }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

    // 将字串切成句子再加以切分成词
    function string_split($str, $func = "") {       
        $ret = array();
       
        if ($func ==

来源:http://www.tulaoshi.com/n/20160129/1489985.html

延伸阅读
标签: PHP
  图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情。PHP的文件上传函数提供了在这块468x60像素的区域(网页广告的标准尺寸)实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发FTP程序或是ASP和Perl CAI中需要外挂扩展才能实现此项功能的弊端。       ...
标签: Web开发
PHP(Hypertext Preprocessor)是一种 HTML 内嵌式的语言 (类似 IIS 上的ASP)。而 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。除此之外,用 PHP 写出来的 Web 后端CGI 程序,可以很轻易的移植到不同的系统平台上。 我们在做网站时,需要访问者的参于才能将网站建设得更加...
标签: PHP
  作者:hutuworm 来源:糊涂馋寺 目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了 验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输 入表单提交网站验证,验证成功后才能使用某项功能。 我们这里展示...
标签: PHP
       <?php   /*   如有转载,请注明作者      作者: 何志强   文件: ubb.php   备注: 说是改进,其实核心函数parse()已经完全重写了,而且思路也是不一样的。   不过仍是受何志强的例子的启发,而且测试的例子还有URLCHECK等...
标签: PHP
用PHP实现POP3邮件的收取   troyoo.com超越 发布日期:2004-08-09 14:51 发布人:chengxin119 〖关闭窗口〗 1 [2] [3] 作者信息:陈俊清()developer 文章信息:中级 初发日期:2004 08 关键字:PHP POP3 email 来源链接:http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=10468&pageN...