中文分词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文分词相关的知识,希望对你有一定的参考价值。

参考技术A

中文分词主要有三种技术,分别为:

基于统计的分词模型其主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。
其一般分为两步:

语言模型中常用的为n元模型,所谓n元模型就是在估算条件概率时,忽略距离大于等于n的上文此的影响,其概率计算公式如下:

一般使用频率计数的比例来计算n元条件概率

当n越大时,模型包含的词序信息越丰富,同时计算量随之增大。与此同时,长度越长的文本序列出现的次数也会减少。同时为避免出现分母为零的情况,一般在n元模型中与要配合相应得平滑算法来解决这个问题,例如拉普拉斯平滑等

隐含马尔可夫模型是将分词作字在字串中得序列标注任务来实现的,其基本思路是:每个字在构造一个特定的词语时都占据着一个确定的构词位置。
用数学抽象表示如下: 用 代表输入的句子,n为句子长度, 代表输出的标签,理想输出为:

我么们假设每个字的输出仅仅与当前字有关,就可以得到:

通过贝叶斯公式我们可以把最大化 转化为最大化

针对 作马尔可夫假设,得到:

对 有:

作齐次马尔可夫假设的计算公式如下(这个公示表示,每个输出仅仅与上一个输出有关):

于是得到:

~

在HMM中,求解 的常用方法是Veterbi算法,这个算法的核心思想是: 如果最终的最优化路径经过某个 ,那么从初始节点到 点的路径必然也是一个最优路径。

最常用的就是先基于词典的方式进行分词,然后再用统计分词方法进行辅助。

jieba分词结合了基于规则和基于统计这两类方法。
jieba提供了三种分词模式:

除了可以进行分词外,还可以进行词性标注。

下面是各种分词工具比较:

图片 来自

还有 NLPIR汉语分词系统 ,主要功能包括中文分词;英文分词;词性标注;命名实体识别;新词识别;关键词提取;支持用户专业词典与微博分析。NLPIR系统支持多种编码、多种操作系统、多种开发语言与平台

java 中文分词为啥用 ik

为什么呢?因为Lucene自带的分词器比较适合英文的分词,而IK首先是一个中文的分词器。
具体的优点先不细说,单说分词的结果来看:

1 比如说 我爱北京

使用自带的分词 我/爱/北/京
IK分词 我/爱/北京
2 可以自己扩展词典
有很多分词器是不能够进行自己扩展词典的,有自己的词典,导致分词的结果才是自己想要的结果。
3 可以自己定义停用词字典
4 和Lucene结合比较高,有很多封装好的模块。用来检索非常顺手。
当然,IK自2012年已经不再维护了。后面有出现了很多其他的分词器。
参考技术A ik分词器简单容易控制啊,反正我个人觉得ik不错

以上是关于中文分词的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch 中文分词器对比

中文分词概述及结巴分词原理

百度中文分词如何分词

lucene 中文分词?

分词器以及ik中文分词器

Python中文分词的原理你知道吗?