基于mmseg的cjk中文分詞器

jopen 8年前發布 | 33K 次閱讀 中文分詞

ECJKSeg

又一個基于mmseg的cjk中文分詞器,首先按照Unicode text segmentation,uax 29的國際標準分詞,即首先切分英文與數字等,再在切出的中文串句子上采用MMSEG分詞,詞典使用搜狗分詞庫。

Features:
1.字典采用patricia trie, 實現采用的是https://github.com/rkapsi/patricia-trie,所以支持詞典的動態增刪查改,不需要重新load字典文件。
2.采用的分詞方法是基于unicode uax #29 與mmseg,uax 29的實現是JDK的java.text package, refer to : http://icu-project.org/docs/papers/text_boundary_analysis_in_java。所以既支持英文等歐洲的分詞,又支持中文,CJK的分詞,當然你要先準備日文的詞典文件。

使用方法:
public static void main(String[] args) throws IOException{ ECJKSeg seg = new ECJKSeg(); String s = "如果紀勤不是一個合格的主席,那肯定是因為有人忘了通知他。我的用戶名是aa885,我的郵箱是9999@gmail.com."; Reader r = new StringReader(s); seg.setReader(r); Word w; while((w = seg.nextWord()) != null){ System.out.println(w); } seg.close(); } 結果
text: 如果 startOffset: 0 endOffset: 1
text: 紀 startOffset: 2 endOffset: 2
text: 勤 startOffset: 3 endOffset: 3
text: 不是 startOffset: 4 endOffset: 5
text: 一個合格 startOffset: 6 endOffset: 9
text: 的 startOffset: 10 endOffset: 10
text: 主席 startOffset: 11 endOffset: 12
text: 那 startOffset: 14 endOffset: 14
text: 肯定 startOffset: 15 endOffset: 16
text: 是因為 startOffset: 17 endOffset: 19
text: 有人 startOffset: 20 endOffset: 21
text: 忘了 startOffset: 22 endOffset: 23
text: 通知 startOffset: 24 endOffset: 25
text: 他 startOffset: 26 endOffset: 26
text: 我的 startOffset: 28 endOffset: 29
text: 用戶名 startOffset: 30 endOffset: 32
text: 是 startOffset: 33 endOffset: 33
text: aa885 startOffset: 34 endOffset: 38
text: 我的郵箱 startOffset: 40 endOffset: 43
text: 是 startOffset: 44 endOffset: 44
text: 9999 startOffset: 45 endOffset: 48

text: gmail.com startOffset: 50 endOffset: 58

ecjkseg4es

ECJKSeg 基于mmseg,添加對最新版本的5.3.1 lucene 和 2.1.1 elastic search 分詞插件的支持。

項目地址: https://github.com/cheetyanShaw/ecjkseg4es

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!