文档章节

分词算法

将将将
 将将将
发布于 2016/04/20 15:44
字数 1571
阅读 183
收藏 2
点赞 1
评论 0

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

一、最大正向匹配算法

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

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

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

二、逆向最大匹配

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

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

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

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

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

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

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

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

三、双向匹配

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

四、最少切分法

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

五、全切分

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

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

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

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



© 著作权归作者所有

共有 人打赏支持
将将将
粉丝 21
博文 17
码字总数 12880
作品 0
深圳
程序员
Java中文分词组件 - word分词

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

杨尚川 ⋅ 2014/04/29 ⋅ 46

word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

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

杨尚川 ⋅ 2014/04/29 ⋅ 1

Tiny中文分词

Maven引用坐标: <dependency> Tiny中文分词是本人一开始做的一个验证性开发,结果开发出来效果还非常不错,因此就加入到Tiny框架中。 Tiny中文分词支持下面的功能: 1.中文分词 2.中文转化拼...

悠悠然然 ⋅ 2014/02/19 ⋅ 1

word v1.3 发布,Java 分布式中文分词组件

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

杨尚川 ⋅ 2015/08/29 ⋅ 0

干货 | 自然语言处理(1)之聊一聊分词原理

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

sfm06sqvw55dft1 ⋅ 2017/12/08 ⋅ 0

go中文分词包--cwsharp-go

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

menuvb ⋅ 2015/08/04 ⋅ 0

Java分布式中文分词组件word分词v1.2发布

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

杨尚川 ⋅ 2015/04/11 ⋅ 5

R语言中文分词 --jiebaR

"结巴"中文分词的R语言版本,支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment),共四种分词模式,同时...

yestr ⋅ 2014/11/04 ⋅ 1

jiebaR 0.1 发布,R语言中文分词

jiebaR是"结巴"中文分词的R语言版本,支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment),共四种分词模...

yestr ⋅ 2014/11/04 ⋅ 9

中文分词算法 之 基于词典的逆向最大匹配算法

在之前的博文中介绍了基于词典的正向最大匹配算法,用了不到50行代码就实现了,然后分析了词典查找算法的时空复杂性,最后使用前缀树来实现词典查找算法,并做了3次优化。 下面我们看看基于词...

杨尚川 ⋅ 2014/03/21 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 22分钟前 ⋅ 5

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 27分钟前 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部