在以前的博文中介紹了基於詞典的逆向最大匹配算法,好比咱們切分句子: 中華人民共和國萬歲萬歲萬萬歲,使用逆向最大匹配算法的切分結果爲:[中華人民共和國, 萬歲, 萬歲, 萬萬歲],能夠看到,切分出來的詞是很長的,粒度很粗,若是咱們想要切分出很細粒度的詞,該怎麼辦呢?java
本文介紹逆向最小匹配算法,該算法和逆向最大匹配算法相得益彰,一個強調細粒度,一個強調粗粒度。git
使用逆向最小匹配算法,必須注意的一點是:詞典中不能有單字詞,詞的長度至少爲2!咱們看逆向最小匹配算法和逆向最大匹配算法的代碼比較:github
切分效果以下:算法
切分句子: 中華人民共和國萬歲萬歲萬萬歲 逆向最大匹配: [中華人民共和國, 萬歲, 萬歲, 萬萬歲] 逆向最小匹配: [中華, 人民, 共和國, 萬歲, 萬歲, 萬, 萬歲] 切分句子: 楊尚川是APDPlat應用級產品開發平臺的做者 逆向最大匹配: [楊尚川, 是, APDPlat, 應用, 級, 產品開發, 平臺, 的, 做者] 逆向最小匹配: [楊尚川, 是, APDPlat, 應用, 級, 產品, 開發, 平臺, 的, 做者] 切分句子: 美國加州大學的科學家發現 逆向最大匹配: [美國加州大學, 的, 科學家, 發現] 逆向最小匹配: [美國, 加州, 大學, 的, 科, 學家, 發現]
代碼託管於GITHUBspa
參考資料:code
一、中文分詞十年回顧視頻
二、中文信息處理中的分詞問題blog
三、漢語自動分詞詞典機制的實驗研究教程
四、由字構詞_中文分詞新方法開發