PHP中实现中文分词与关键词提取不能依赖原生字符串函数,应选用jieba-php库(Composer安装、支持多模式分词)、SCWS扩展(C语言高性能、需编译配置)、远程API调用(如百度NLP)、正则匹配固定词典或Xunsearch集成SCWS增强搜索。

如果需要在PHP中对中文文本进行语义级切分以提取关键词或实现分词功能,则不能依赖原生字符串函数(如str_split、explode),因为它们仅能按字或固定分隔符切割,无法识别“北京大学”“人工智能”等复合词。以下是多种可行的中文分词与关键词提取方法:
一、使用jieba-php库实现语义分词
该方案基于Python jieba算法的纯PHP移植,支持精确模式、全模式及搜索引擎模式,无需编译扩展,适合大多数Web环境。
1、通过Composer安装依赖:composer require fukuball/jieba-php
2、在脚本中引入自动加载并初始化分词器:require_once 'vendor/autoload.php'; Fukuball\Jieba\Jieba::init();
立即学习“PHP免费学习笔记(深入)”;
3、调用cut方法执行分词:$result = Fukuball\Jieba\Jieba::cut("自然语言处理技术正在快速发展");
4、获取带词性的标注结果(需启用Finalseg):$tagged = Fukuball\Jieba\Jieba::tag("她毕业于清华大学计算机系");
二、部署SCWS扩展进行高性能分词
SCWS是C语言实现的轻量级分词引擎,作为PHP扩展加载后内存占用低、吞吐高,适用于高并发检索场景。
1、从官方源码仓库下载并编译安装:git clone https://gitcode.com/gh_mirrors/sc/scws && cd scws && ./configure && make && sudo make install
2、编辑php.ini添加扩展配置:extension=scws.so 并设置字符集:scws.default.charset = utf8
3、在PHP中创建实例并发送文本:$so = scws_new(); scws_set_charset($so, 'utf8'); scws_send_text($so, "中文信息检索离不开高质量分词");
4、循环获取分词结果:while ($tmp = scws_get_result($so)) { foreach ($tmp as $word) { echo $word['word'] . ' '; } }
三、调用远程API完成免部署分词
适用于共享主机、容器化受限或短期验证场景,无需本地安装任何组件,但依赖网络可用性与服务配额。
1、注册百度AI平台账号并申请NLP服务权限,获取Access Token。
2、构造标准JSON请求体并设置Content-Type为application/json:$data = json_encode(['text' => '机器学习模型需要大量标注数据']);
3、使用cURL发起POST请求至lexer接口:$ch = curl_init('https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token=YOUR_TOKEN');
4、解析返回的JSON结构,提取words字段中的分词数组:$response = json_decode(curl_exec($ch), true); $words = array_column($response['items'], 'item');
四、基于正则与预定义词典做关键词匹配
当仅需检测固定词汇(如敏感词、品牌名、地名)且不涉及未登录词时,可规避完整分词器开销,采用有序正则匹配策略提升确定性。
1、将关键词数组转义并拼接为原子组:$pattern = '/(' . implode('|', array_map('preg_quote', $word_list)) . ')/u';
2、确保关键词按长度降序排列,避免短词截断长词:usort($word_list, function($a, $b) { return strlen($b) - strlen($a); });
3、执行全局匹配并提取所有命中项:preg_match_all($pattern, $text, $matches); $keywords = array_unique($matches[0]);
4、若需保留位置信息,改用preg_match_all配合PREG_OFFSET_CAPTURE标志:preg_match_all($pattern, $text, $matches, PREG_OFFSET_CAPTURE);
五、通过Xunsearch集成SCWS实现搜索增强分词
该方式将分词能力嵌入全文检索流程,在建立索引和查询阶段统一应用SCWS词典与规则,特别适用于构建站内搜索系统。
1、安装Xunsearch服务并启动守护进程:./xs-ctl.sh start
2、配置项目schema.xml,指定tokenizer为scws:<tokenizer class="XSTokenizerScws"/>
3、在PHP中初始化XS对象并绑定分词器:$xs = new XS('myapp'); $index = $xs->index; $index->setTokenizer(new XSTokenizerScws());
4、执行索引重建使分词配置生效:$index->beginRebuild(); $index->endRebuild();



















