赞
踩
《NLP-双向匹配中文分词(Java实现)》;
摘要:平台使用Netbeans搭载JDK1.8环境编程。实现MM算法及RMM算法并集成于一个窗体平台(如下图)。字典使用ChineseDic.txt;
理论描述:
中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。(以上摘自百度百科)
为什么中文分词如此重要呢,是因为它是处理中文的语义分析,文本分类,信息检索,机器翻译,机器问答等问题的基础。如果分词效果不好,很有可能会严重影响到后续的研究。 因为中文存在交集歧义,组合歧义,无法在句子中解决的歧义,具有未登录词等等特征,使得中文分词很难。
中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。
传统基于字符串匹配的分词方法字符匹配法分词之三 :
1)正向最大匹配法(由左到右的方向)MM
2)逆向最大匹配法(由右到左的方向)RMM
3)双向最大匹配法(进行由左到右、由右到左两次扫描)MM+RMM
算法描述:
本文实现双向匹配算法,具体算法描述如下:
MM:
a.字典里不含所有的中文单字词(比如:靖),所以增加算法改进为匹配不出来的中文单字词单独划分出来,即字典里没有的单字也可以匹配出来。
b.原算法不能把句子的最后一个字符(中文字或者中文标点)匹配出来,即最后一个字符无法实现匹配。则修改算法使最后的字符也可以进行匹配。
6. 具体算法及详细注释如图:
RMM:
1. 先确定一句中文序列(句子)以及Maxlen(每次开始最大划分字数)。(字典默认为ChineseDic.txt)
2. 从句子的右边(起始位置为末尾)开始向左边划出Maxlen个字,在字典里进行字符串匹配,a.若找到(匹配成功)则取出此划分段作为确定的词标记分割符。b.若找不到(匹配失败)则进行从右边起的划出(Maxlen-1)个字数再去字典里进行匹配,若找到则去a,若找不到则重复b,再减一,直到找到为止。
3. 划分出前一个词然后则跳至此词后的第一个字再重复2.的步骤。直至句子结束。
4. 具体算法及详细注释如图:
详例描述:
序列:“对外经济技术合作与交流不断扩大。”
字典:ChineseDic.txt;
Maxlen:4;
MM:
RMM:
软件演示:
MM:
RMM:
2. 我们即将以丰收的喜悦送走牛年,以昂扬的斗志 迎来虎年。
MM:
RMM
MM,Maxlen为3
MM,Maxlen为2
RMM,Maxlen为3
总结:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。