精华内容
下载资源
问答
  • PHP中文分词
    2021-03-23 18:37:02

    对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好。 当然, 本文不是要对中文搜索引擎做研究, 而是分享如果用 PHP 做一个站内搜索引擎。 本文是这个系统中的一篇。

    我使用的分词工具是中科院计算所的开源版本的 ICTCLAS。 另外还有开源的 Bamboo, 我随后也会对该工具进行调研。

    从 ICTCLAS 出发是个不错的选择, 因为其算法传播比较广泛, 有公开的学术文档, 并且编译简单, 库依赖少。 但目前只提供了 C/C++, Java 和 C# 版本的代码, 并没有 PHP 版本的代码。 怎么办呢? 也许可以学习它的 C/C++ 源码和学术文档中, 然后再开发一个 PHP 版本出来。 不过, 我要使用进程间通信, 在 PHP 代码里调用 C/C++ 版本的可执行文件。

    下载源码解压后, 在有 C++ 开发库和编译环境的机器上直接 make ictclas 即可。 它的 Makefile 脚本有个错误, 执行测试的代码没有加上'。/', 当然不能像 Windows 下执行成功了。 但也不影响编译结果。

    进行中文分词的 PHP 类就在下面了, 用 proc_open() 函数来执行分词程序, 并通过管道和其交互, 输入要进行分词的文本, 读取分词结果。

    class NLP{

    private static $cmd_path;

    // 不以'/'结尾

    static function set_cmd_path($path){

    self::$cmd_path = $path;

    }

    private function cmd($str){

    $descriptorspec = array(

    0 => array("pipe", "r"),

    1 => array("pipe", "w"),

    );

    $cmd = self::$cmd_path . "/ictclas";

    $process = proc_open($cmd, $descriptorspec, $pipes);

    if (is_resource($process)) {

    $str = iconv('utf-8', 'gbk', $str);

    fwrite($pipes[0], $str);

    $output = stream_get_contents($pipes[1]);

    fclose($pipes[0]);

    fclose($pipes[1]);

    $return_value = proc_close($process);

    }

    /*

    $cmd = "printf '$input' | " . self::$cmd_path . "/ictclas";

    exec($cmd, $output, $ret);

    $output = join("\n", $output);

    */

    $output = trim($output);

    $output = iconv('gbk', 'utf-8', $output);

    return $output;

    }

    /**

    * 进行分词, 返回词语列表.

    */

    function tokenize($str){

    $tokens = array();

    $output = self::cmd($input);

    if($output){

    $ps = preg_split('/\s+/', $output);

    foreach($ps as $p){

    list($seg, $tag) = explode('/', $p);

    $item = array(

    'seg' => $seg,

    'tag' => $tag,

    );

    $tokens[] = $item;

    }

    }

    return $tokens;

    }

    }

    NLP::set_cmd_path(dirname(__FILE__));

    ?>

    使用起来很简单(确保 ICTCLAS 编译后的可执行文件和词典在当前目录):

    require_once('NLP.php');

    var_dump(NLP::tokenize('Hello, World!'));

    ?>

    更多相关内容
  • PHP中文分词

    2018-10-30 14:10:15
    PHP中文分词,将搜索关键字分成词组,方便与搜索更多的内容
  • PHP中文分词中文分词 自动获取关键词介绍自动获取关键词介绍用了大家熟知的scws 还有phpanalysis ,需要的朋友可以参考下复制代码 代码如下:<?php header("Content-Type:text/html; charset=utf-8"); define('APP_...
  • PHP简易中文分词

    2018-08-04 14:03:59
    PHP简易中文分词,免组件分词 $ca = new cls_analysis(); //把一段短文本进行拆分 $str = "把一段短文本进行拆分"; $ca->SetSource( $str, 'utf-8', 'utf-8'); $ca->StartAnalysis(); $okstr = $ca->...
  • PHP中文分词介绍

    2021-04-12 21:10:52
    PHP中文分词最常见的词语二分法:$str = '这是我的网站www.7di.net!';//$str = iconv('GB2312','UTF-8',$str);$result = spStr($str);print_r($result);/*** UTF-8版 中文二元分词*/function spStr($str){$cstr = ...

    PHP中文分词

    最常见的词语二分法:

    $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}quot;", "&", "%", "#", "@", "+", "=", "{", "}", "[", "]", ":", ")", "(", ".", "。", ",", "!", ";", "“", "”", "‘", "’", "[", "]", "、", "—", " ", "《", "》", "-", "…", "【", "】",);

    $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);

    }

    執行結果是:

    Array ( [0] => 7 [1] => www [2] => di [3] => net [4] => 这是 [5] => 是我 [6] => 我的 [7] => 的网 [8] => 网站 )

    接下来,将以上结果转换为区位码,PHP代码是:

    foreach ($result as $s) {

    $s = iconv('UTF-8','GB2312',$s);

    $code[] = gbCode($s);

    }

    $code = implode(" ", $code);

    echo $code;

    function gbCode($str) {

    $return = null;

    if (!preg_match("/^[\x80-\xff]{2,}$/",$str)) return $str;

    $len = strlen($str);

    for ($i= 0; $i< $len; $i=$i+2) {

    $return .= sprintf("%02d%02d",ord($str{$i})-160,ord($str{$i+1})-160);

    }

    return $return;

    }

    展开全文
  • “结巴”中文分词:做最好PHP中文分词,中文断词组件,当前翻译版本为jieba-0.33版本,未来再慢慢往上升级,效能也需要再改善,请有兴趣的开发者一起加入开发!若想使用Python版本请前往现在已经可以支持繁体中文!...
  • php 中文分词使用

    2021-03-23 18:37:06
    php 中调用分词,安装 php 扩展。 假设您已经将 scws 按上述步骤安装到 /usr/local/scws 中。 安装此扩展要求您的 php 和系统环境安装了相应的 autoconf automake 工具及 phpize 。 1) 进入源码目录的 phpext/ ...

    1. 取得 scws-1.2.3 的代码

    wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2

    2. 解开压缩包

    [hightman@d1 ~]$ tar xvjf scws-1.2.3.tar.bz2

    3. 进入目录执行配置脚本和编译

    [hightman@d1 ~]$ cd scws-1.2.3

    [hightman@d1 ~/scws-1.2.3]$ ./configure --prefix=/usr/local/scws && make && make install

    注:这里和通用的 GNU 软件安装方式一样,具体选项参数执行 ./configure --help 查看。

    常用选项为:--prefix=

    4. 顺利的话已经编译并安装成功到 /usr/local/scws 中了,执行下面命令看看文件是否存在

    [hightman@d1 ~/scws-1.2.3]$ ls -al /usr/local/scws/lib/libscws.la

    5. 试试执行 scws-cli 文件

    [hightman@d1 ~/scws-1.2.3]$ /usr/local/scws/bin/scws -h

    scws (scws-cli/1.2.3)

    Simple Chinese Word Segmentation - Command line usage.

    Copyright (C)2007 by hightman.

    6 用 wget 下载并解压词典,或从主页下载然后自行解压再将 *.xdb 放入 /usr/local/scws/etc 目录中

    [hightman@d1 ~/scws-1.2.3]$ cd /usr/local/scws/etc

    [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2

    [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2

    [hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-gbk.tar.bz2

    [hightman@d1 /usr/local/scws/etc]$ tar xvjf scws-dict-chs-utf8.tar.bz2

    7.8.9. 这三步是用C程序测试 直接跳过 我们要做的是php测试

    10. 在 php 中调用分词,安装 php 扩展。

    假设您已经将 scws 按上述步骤安装到 /usr/local/scws 中。

    安装此扩展要求您的 php 和系统环境安装了相应的 autoconf automake 工具及 phpize 。

    1) 进入源码目录的 phpext/ 目录 ( cd ~/scws-1.2.3 )

    这里出现

    -bash: /usr/local/src/php-5.6.3/scripts/phpize: Permission denied

    解决办法:

    $ cd ~/scws-1.2.3/phpext/

    $ locate phpize

    2) 执行 phpize (在PHP安装目录的bin/目录下)

    $ /usr/local/php/bin/phpize

    3) 执行 ./configure --with-scws=/usr/local/scws

    若 php 安装在特殊目录 $php_prefix, 则请在 configure 后加上 --with-php-config=$php_prefix/bin/php-config

    编译出现错误

    configure: error: Cannot find php-config. Please use --with-php-config=PATH

    解决办法:

    下面第一条命令 查找php-config 目录位置

    $ locate php-config

    $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-scws=/usr/local/scws

    4) 执行 make 然后用 root 身份执行 make install

    # make && make install

    安装成功后 扩展共享目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

    5) 在 php.ini 中加入以下几行

    我的地址:/usr/local/php/etc/php.ini

    [scws]

    ;

    ; 注意请检查 php.ini 中的 extension_dir 的设定值是否正确, 否则请将 extension_dir 设为空,

    ; 再把 extension = scws.so 指定绝对路径。

    ;

    extension = scws.so

    scws.default.charset = utf8

    scws.default.fpath = /usr/local/scws/etc

    6) 命令行下执行 php -m 就能看到 scws 了或者在 phpinfo() 中看看关于 scws 的部分,记得要重启 web 服务器

    才能使新的 php.ini 生效。

    注意 可能有的php 客户端版本比较低, 使用 php -m 显示的是客户端的版本 并不是实际安装的版本

    那么可以通过 程序中的 phpinfo() 在浏览器上访问查看

    重启脚本如下

    $ service php-fpm restart

    $ service nginx restart

    7) 这样就算安装完成了,余下的工作只是PHP代码编写问题了。

    关于 PHP 扩展的使用说明请参看代码中 phpext/README.md 文件或其它文档章节。

    $ cat README.md #获取函数使用说明

    下面 写一个常用的 去重的分词结果:

    $so = scws_new();

    $so->set_charset('utf8');

    // 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件

    $so->send_text("我是一个中国人,我会C++语言,我也有很多T恤衣服");

    $words = array();

    while ($tmp = $so->get_result())

    {

    foreach ($tmp as $val) {

    if(!new_in_array($val, $words,'word')){

    $words[] = array(

    'word' => $val['word'],

    'weight' => $val['idf'],

    );

    }

    }

    }

    print_r($words);

    $so->close();

    function new_in_array($need,$array,$column=''){

    $flag = false;

    foreach ($array as $val) {

    if($val[$column] == $need[$column]){

    $flag = true;

    break;

    }

    }

    return $flag;

    }

    ?>

    展开全文
  • 专业提供中文分词PHP扩展和中文词库。使中文分词,全文搜索不再是难点,一个php函数即完成分词。然后即可把分词后的结果存储,再使用sphinx,Lucene等进行索引搜索了。安装说明1。 若服务器为Windows系统,复制PHP...
  • PHP中文分词代码使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。由于PhpanAlysis是无组件的系统,因此速度会比有组件的稍慢,不过在大量分词中,由于边分词边完成...
  • 一、SCWS简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文...此外还提供了 PHP 扩展模块, 可在 PHP 中快速而方便地使用分词功能。分词算法上并无太多创新成分,采用的是自己采集的词频词
  • PHP中文分词代码使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码更广泛,并且对utf-8编码尤为方便。由于PhpanAlysis是无组件的系统,因此速度会比有组件的稍慢,不过在大量分词中,由于边分词边完成...
  • 对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好。
  • 因为要做毕业设计,可能需要相关知识,所以在此总结一下常见的中文分词系统。1)HTTPCWS – 基于HTTP协议的开源中文分词系统张宴的作品,基于ICTCLAS 3.0 共享版,分词精度98.45%。可以采用HTTP方式调用借口。2)SCWS ...

    因为要做毕业设计,可能需要相关知识,所以在此总结一下常见的中文分词系统。

    1)HTTPCWS – 基于HTTP协议的开源中文分词系统

    张宴的作品,基于ICTCLAS 3.0 共享版,分词精度98.45%。可以采用HTTP方式调用借口。

    2)SCWS – 简易中文分词系统

    SCWS 在概念上并无创新成分,采用的是自行采集的词频词典,并辅以一定程度上的专有名称、人名、地名、数字年代等规则集,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些中小型搜索引擎、关键字提取等场合运用。 SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK,UTF-8,BIG5 等汉字编码,切词效率高。

    3)PhpanAlysis – PHP无组件分词系统

    PhpanAlysis分词系统是基于字符串匹配的分词方法 ,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配 和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。

    欢迎加入我爱机器学习QQ14群:336582044

    getqrcode.jpg

    微信扫一扫,关注我爱机器学习公众号

    展开全文
  • PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转。 PHP Chinese Tool class, support Chinese pinyin, pinyin participle, simplified and traditional conversion
  • 在线分词服务API写的函数,测试可正常运行:复制代码 代码如下:/** * DZ在线中文分词 * @param $title string 进行分词的标题 * @param $content string 进行分词的内容 * @param $encode string API返回的数据...
  • 对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好。 当然, 本文不是要对中文搜索引擎做研究, 而是分享如果用 PHP 做一个站内搜索引擎。 本文是这个系统中...
  • SCWS是国内PHP大牛hightman开发的基于PHP的简易中文分词系统,因为PHP的搭档Mysql不支持中文分词全文索引,这个SCWS方案可算当前PHP圈中初级分词需求的最佳解决方案。用它来实现简单的中文全文搜索,或者自动生成...
  • PHP中文分词扩展 SCWS

    2018-01-23 09:02:18
    PHP中文分词扩展 SCWS,可以在windows7下vs2012中编译出来的,支持php5.6.x zts版
  • 分词的这个技术,挺重要的,在有些方面起着非常重要的作用,这里摘自一博友的文章PSCWS4 类对应的文件为 pscws4.class.php。在 PHP 代码中的调用方法如下://加入头文件require './pscws4/pscws4.class.php';//建立...
  • 主要介绍了php实现的中文分词类,结合完整实例形式分析了php基于字符串的遍历、转换、运算等技巧实现中文分词功能的具体方法,需要的朋友可以参考下,共同学习共同进步。
  • PHP中文分词实例代码

    2018-07-03 21:23:51
    PHP中文分词实例代码 基本功能: 根据词频词典较为智能的中文分词,支持规则识别人名、地区等。
  • NNABC PHP中文分词扩展类,让PHP中的中文分词变得轻松容易 组件现有两个函数:中文分词函数nnabc_fenci(),用于直接分词;IP地址查询函数nnabc_ipaddr()。 安装说明 注意Windows系统与Linux系统安装方法略有不同 ...
  • version 0.0.6 加载字典缘故嫌慢的同学可以考虑使用 functions array jieba(string $text, int $action = 0, int $limit = 50) ...php.ini extension=jieba.so jieba.enable=1 jieba.dict_path=/data/softs/ph
  • PHP中文分词扩展

    2020-07-11 21:25:24
    以前做过自然语言处理(nlp)的相关后端开发,之前也谈过搜索引擎Elasticsearch,它们都离不开一个基础性的工具~分词,放到Python里面也是处理文本的一个很基础常用的东西了,大致干的是这么一件事:将整句话按照...
  • keywords:中文分词PHP中文分词、trie数据结构、Doubule Array Trie Datastruct原理:Trie 数据结构的名词介绍我就不介绍了,大家google,百度可以搜索一大堆的文章来.Tire索引树法结构:首字散列表、Trie索引树结点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,851
精华内容 3,140
关键字:

PHP中文分词