基于python的分词算法的实现(1) - 算法

本文介绍了基于概率的分词算法,通过分析ictclas项目,揭示了仅考虑单个词出现概率的不足,提出考虑词与上下文相关性的优化目标,并逐步简化为基于前一个词的概率模型。讨论了如何通过统计大量资料来获取连续词出现概率,以实现实际的分词算法。
摘要由CSDN通过智能技术生成

从网络上搜索分词算法,可以找到一个很有名的开源项目ictclas(http://ictclas.org/)。这个算法是基于概率的。概率的确是个好玩意,很多语言层面难以简单概括的东西,用一个概率就可以描绘其很多的特征。

最简单的,假设我们知道每一个词在汉语言里出现的概率,并且假设这个概率和其它的词不相关,我们就可以设计这样的一个分词算法,使得分词结果中的词出现的概率最大。也就是优化


P(Words)=P(Word1)*P(Word2)...

这样足够好了么?有一个笑话:用“天真”造句,小朋友答“今天天真好”。这句话的原意是“今天|天|真好”,“天”和“真”在两个词中,所以这其实是一个错误的造句。如果用我们最大化词概率的方法对其进行分词,很不幸,分词的结果会是“今天|天真|好”。因为“今天”和“天真”都是高概率的词,所以分词算法很自然的就把它们分出来了。

现在之前算法的缺点就一目了然了,它假设单个词出现的概率和它的上下文是不相关的,而没有分析汉语中一些的特征,例如汉语句法结构或者是词性的搭配关系,所以就会造出如“今天|天真”之类的句子。如果要考虑词之间的相关性,那需要优化的目标可以表达为


P(Words)=P(Word1|Words_-1)*P(Word2|Words_-2)*P(Word3|Words_-3)....

Words_-n是分词结果中除了第n个词之外的词。这个优化目标过于复杂,要知道P(Wordn|Words_-n)的值近乎是不可能的。简化起见,对于第n个词,我们只考虑它之前出现的词

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值