├── .gitignore ├── README.md └── scel2mmseg.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *~ 3 | .project 4 | .settings 5 | .pydevproject 6 | carevenv 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 将搜狗(sogou)的细胞词库转换为mmseg的词库 2 | 3 | 功能: 4 | 5 | - scel2mmseg.py: 将.scel文件转换为mmseg格式的.txt文件 6 | 7 | 使用方法: python scel2mmseg.py a.scel a.txt 8 | 9 | 批量转换方法:python scel2mmseg.py scel文件目录 a.txt 10 | 11 | 说明:新增加的所有词的词频都为1,对于格式的解释如下: 12 | > 每条记录分两行。其中,第一行为词项,其格式为:[词条]\t[词频率]。需要注意的是,对于单个字后面跟这个字作单字成词的频率,这个频率需要在大量的预先切分好的语料库中进行统计,用户增加或删除词时,一般不需要修改这个数值;对于非单字词,词频率处必须为1。第二行为占位项,是由于LibMMSeg库的代码是从Coreseek其他的分词算法库(N-gram模型)中改造而来的,在原来的应用中,第二行为该词在各种词性下的分布频率。LibMMSeg的用户只需要简单的在第二行处填”x:1″即可 13 | 14 | - mergedict.py: 将mmseg的多个.txt文件合并为一个.txt 15 | 16 | 使用方法: python mergedict.py unigram.txt b.txt c.txt new.txt 17 | 18 | 说明: .txt可以使mmseg格式的,也可以是每行一个词的格式(这样词频默认为1) 19 | 20 | 注意:因为merge的时候会判重,一个词在前面出现过,就不会追加到新产生的文件中,所以要将unigram.txt放到最前面 21 | 22 | 23 | 24 | ### 使用案例 25 | 1. [叮当星球](https://www.aboutstudy.net) 26 | 2. [极客星球](https://www.geekshared.com) 27 | 3. [Web攻城志](http://blog.vimge.com) 28 | 4. [Creem](https://www.creem.io/bip/geekshared) 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /scel2mmseg.py: -------------------------------------------------------------------------------- 1 | import struct 2 | import os, sys, glob 3 | 4 | def read_utf16_str (f, offset=-1, len=2): 5 | if offset >= 0: 6 | f.seek(offset) 7 | str = f.read(len) 8 | return str.decode('UTF-16LE') 9 | 10 | def read_uint16 (f): 11 | return struct.unpack ('