双向最大匹配算法
雙向最大匹配算法?
簡(jiǎn)介#
雙向最大匹配方法是基于詞典的分詞方法,按照一定的策略將分析的漢字串與字典里面的詞條進(jìn)行匹配,若在詞典中找到某個(gè)字符串,則匹配成功。
根據(jù)掃描的方向可以分為正向最大匹配算法和逆向最大匹配
正向最大匹配算法(MM)#
正向的方向定義是從字符串下標(biāo)0到字符串末尾位置,取出字串與字典進(jìn)行匹配
初始化最大匹配長(zhǎng)度MaxLen,當(dāng)前位置pos(初始為0),處理結(jié)果為result
0.令len = MaxLen,取出pos到pos+len的子串,查找字典
1.若匹配到,則將子串添加到result中,在保證不超出邊界范圍的情況下,pos = pos + len,向后匹配,len更新為0,回到步驟0處
2.若未在詞典中找到該子串,len--(len>1),繼續(xù)查找字典,若len == 1,則取出剩余子串,返回0步驟
2的步驟類似于:
你好嗎
你好
你
這樣的機(jī)制
逆向最大匹配(RMM)#
方法與正向類似,但方向相反
方向?yàn)閺淖詈笙蚯巴七M(jìn),即待匹配字符串長(zhǎng)度-1的位置,取MaxLen,每次未匹配上則減去最前一個(gè)字
如:
你好嗎
好嗎
嗎
這樣的機(jī)制
雙向最大匹配(BM)#
雙向最大匹配算法的原理就是將正向最大匹配算法和逆向最大匹配算法進(jìn)行比較,從而選擇正確的分詞方式
比較原則/步驟:
1.比較兩種匹配算法的結(jié)果
2.如果分詞數(shù)量結(jié)果不同:選擇數(shù)量較少的那個(gè)
3.如果分詞數(shù)量結(jié)果相同
? 1.分詞結(jié)果相同,返回任意一個(gè)
? 2.分詞結(jié)果不同,返回單字?jǐn)?shù)較少的一個(gè)
? 3.若單字?jǐn)?shù)也相同,任意返回一個(gè)
為什么需要雙向匹配#
根據(jù)研究,中文90%左右的句子,正向匹配和逆向匹配全然重合,但是存在9%句子兩種切分方法得到的結(jié)果不一樣,單期中必然存在一個(gè)是正確的,僅有1%的句子,重合部分是錯(cuò)的(或都不正確)
總結(jié)
- 上一篇: 逆向最大匹配分词算法
- 下一篇: 词法分析-中文分词技术-正向最大匹配法与