文档章节

分词算法

将将将
 将将将
发布于 2016/04/20 15:44
字数 1571
阅读 191
收藏 2

由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少

一、最大正向匹配算法

通常简称为MM法。其基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。若字典中存在这样的一个i字词,则匹配成功,匹配字段被作为一个词切分出来。如果词典中找不到这样的一个i字词,则匹配失败,将匹配字段中的最后一个字去掉,对剩下的字串重新进行匹配处理……  如此进行下去,直到匹配成功,即切分出一个词或剩余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个i字字串进行匹配处理,直到文档被扫描完为止。

例子:“今天来了许多新同事’”
假设:正向最大匹配方式,最大长度为5 (即词库词典中最长的词长度为5)
今天来了许 
今天来了 
今天来 
今天  >>>>>>> 得到一个词:今天 
来了许多新 
来了许多 
来了许 
来了 
来  >>>>>>>>> 得到一个词:来 
了许多新同 
了许多新 
了许多 
了许 
了 >>>>>>>>> 得到一个词: (在实际生产环境 “了”会被作为停用词过滤掉)
许多新同事 
许多新同 
许多新 
许多  >>>>>>>>> 得到一个词:许多 
新同事 
新同 
新  >>>>>>>>> 得到一个词:新 
同事  >>>>>>>>> 得到一个词:同事 

最后正向最大匹配的结果是: 
/今天/来/了/许多/新/同事/ 

二、逆向最大匹配

通常简称为RMM法。RMM法的基本原理与MM法相同 ,不同的是分词切分的方向与MM法相反,而且使用的分词辞典也不同。逆向最大匹配法从被处理文档的末端开始匹配扫描,每次取最末端的i个字符(i字字串)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。相应地,它使用的分词词典是逆序词典,其中的每个词条都将按逆序方式存放。在实际处理时,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆序文档用正向最大匹配法处理即可。

例子:“今天来了许多新同事’”
假设:正向最大匹配方式,最大长度为5 (即词库词典中最长的词长度为5)

许多新同事 
多新同事 
新同事 
同事 ====》得到一个词:同事 
来了许多新 
了许多新 
许多新 
多新 
新 ====》得到一个词:新 
天来了许多 
来了许多 
了许多 
许多 ====》得到一个词:许多 
今天来了 
天来了 
来了 
了 ====》得到一个词:了 
今天来 
天来 
来 ====》得到一个词:来 
今天 ====》得到一个词:今天 

最后反向最大匹配的结果是: 
/今天/来/了/许多/新/同事/ 

正向最大匹配和反向最大匹配的结果并不一定都相同 
例子:’我一个人吃饭’ 
1.正向最大匹配方式,最大长度为5 
我一个人吃 
我一个人 
我一个 
我一 
我 ====》得到一个词: 我 
一个人吃饭 
一个人吃 
一个人 
一个 ====》得到一个词:一个 
人吃饭 
人吃 
人 ====》得到一个词:人 
吃饭 ====》得到一个词:吃饭 

最后正向最大匹配的结果是: 
/我/一个/人/吃饭/ 

2.反向最大匹配方式,最大长度为5 
一个人吃饭 
个人吃饭 
人吃饭 
吃饭 ====》得到一个词:吃饭 
我一个人 
一个人 
个人 ====》得到一个词:个人 
我一 
一 ====》得到一个词:一 
我 ====》得到一个词:我 

最后反向最大匹配的结果是: 
/我/一/个人/吃饭/ 
这次两种方式的结果就不一致了。 

三、双向匹配

将正向最大匹配法与逆向最大匹配法组合。先根据标点对文档进行粗切分,把文档分解成若干个句子,然后再对这些句子用正向最大匹配法和逆向最大匹配法进行扫描切分。如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小集处理

四、最少切分法

使每一句中切出的词数最少

五、全切分

全切分要求获得输入序列的所有可接受的切分形式,而部分切分只取得一种或几种可接受的切分形式,由于部分切分忽略了可能的其他切分形式,所以建立在部分切分基础上的分词方法不管采取何种歧义纠正策略,都可能会遗漏正确的切分,造成分词错误或失败。而建立在全切分基础上的分词方法,由于全切分取得了所有可能的切分形式,因而从根本上避免了可能切分形式的遗漏,克服了部分切分方法的缺陷。

全切分算法能取得所有可能的切分形式,它的句子覆盖率和分词覆盖率均为100%,但全切分分词并没有在文本处理中广泛地采用,原因有以下几点:

1)全切分算法只是能获得正确分词的前提,因为全切分不具有歧义检测功能,最终分词结果的正确性和完全性依赖于独立的歧义处理方法,如果评测有误,也会造成错误的结果。

2)全切分的切分结果个数随句子长度的增长呈指数增长,一方面将导致庞大的无用数据充斥于存储数据库;另一方面当句长达到一定长度后,由于切分形式过多,造成分词效率严重下降。



© 著作权归作者所有

共有 人打赏支持
将将将
粉丝 23
博文 30
码字总数 13288
作品 0
深圳
程序员
私信 提问
word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录...

杨尚川
2014/04/29
0
1
Java中文分词组件 - word分词

Java分布式中文分词组件 - word分词 word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数...

杨尚川
2014/04/29
0
47
干货 | 自然语言处理(1)之聊一聊分词原理

前言 在做文本挖掘时,首先要做的预处理就是分词。英文单词天然有空格隔开容易按照空格分词,但有时也需要把多个单词做为一个分词,比如一些名词如“New York”,需要做为一个词看待。而中文...

sfm06sqvw55dft1
2017/12/08
0
0
word v1.3 发布,Java 分布式中文分词组件

word 分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名...

杨尚川
2015/08/29
4.5K
0
go中文分词包--cwsharp-go

cwsharp-go cwsharp-go是golang的文本分词包,支持中文、英文以及中英混合词组,除此之外,提供自定义分词的扩展(比如日文、韩文或其它语种)。 .NET版:CWSharp-C# 安装&测试 分词算法 cw...

menuvb
2015/08/04
599
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
4
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
4
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部