Swoole加速结巴分词

本文介绍了中文分词的重要性,详细解析了结巴分词的原理和特点,并展示了如何在PHP中使用Swoole扩展实现结巴分词库,特别是在CLI模式下,利用Swoole的特性优化性能,处理高并发请求。
摘要由CSDN通过智能技术生成

中文分词

对于英文句子来说,可以通过空格来切分单词,如

// 今天天气不错
the weather is nice today

可以很简单的把该句子中的单词区分出来

the/weather/is/nice/today

在中文里面,就没有那么方便的区分方法了。当然,如果你习惯这样说话:

今天 天气 不错

大家也不会打你,只会觉得你像个“结巴”(点题了!)

为什么需要分词?

在中文里面的英文单词是两个不同的东西。在读书的时候,最痛苦的一件事就是学习文言文,我想了一下,有大于等于三个原因:

  1. 不知道在哪里断句
  2. 字或词的含义很多
  3. 这个字是通假字(它不是这个它,它是那个它),或者说纯粹就是写错了,但是细想一下也能读的通。

我们常说中文博大精深,历史原因就不细究了,简单来说就是,我们的祖先在中文上的造诣非常高,好几层楼那么高,研究非常透彻,一句话能说出几个意思。我们自小在中文环境下成长,经过千锤百炼,读写是没问题的,但是计算机要怎么理解一句话呢?先从分词开始。

计算机学习分词的过程,和人类是很像的(或许这是局限性),目前有几种:

  1. 基于字符串匹配。按一定的策略在一个已分好词的大词典中搜寻,若找到则视为一个词。
  2. 统计。大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(训练),从而实现对未知文本的切分。
  3. 组合。结合1、2点,如结巴分词

我们学习中文的时候,也有这样的过程,

  1. 积累词语(建立词典)
  2. 训练不同词语在不同句子中的含义的概率(权重),选择具有最大概率(权重)的含义的词语(动态规划,寻找切分组合)

结巴分词是什么?

结巴分词是国内程序员用python开发的一个中文分词模块, 源码被托管在Github

为了方便说明,下面截取了部分文档和例子。

特点

  • 精确模式,试图将句子最精确地切开,适合文本分析
  • 全模式,把句子中所有可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
  • 支持繁体分词
  • 支持自定义词典
  • MIT 授权协议

例子

# encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值