参考于jiebaR中文分词帮助文档,做了个笔记,方便以后学习。这里是官方英文文档,以及jiebaR官网的地址。
分词
jiebaR提供了四种分词模式,可以通过函数worker()来初始化分词引擎,使用函数segment()进行分词。具体使用?worker查看帮助1
2
3
4
5
6text <- ‘你要明白,这仅仅是一个测试文本’
mixseg <- worker() #使用默认参数,混合模型(MixSegment)
segment(text, mixseg)
#等价于mixseg[text]
#也等价于mixseg <= text
直接输入mixseg命令,可以查看此worker的配置1
mixseg
可以通过R语言常用的 \$符号重设一些worker的参数设置,如 WorkerName\$symbol = T,在输出中保留标点符号。一些参数在初始化的时候已经确定,无法修改, 可以通过WorkerName\$PrivateVarible来获得这些信息。
支持文件分词,省去读取文件后再进行分词的麻烦
1 | segment('D:/test.txt', mixseg) #自动判断输入文件编码模式,默认文件输出在同目录下。 |
最大概率法(MPSegment)
负责根据Trie树构建有向无环图和进行动态规划算法,是分词算法的核心。1
2mpseg <- worker('mp') #最大概率法(MPSegment)
mpseg[text]
隐式马尔科夫模型(HMMSegment)
是根据基于人民日报等语料库构建的HMM模型来进行分词,主要算法思路是根据(B,E,M,S)四个状态来代表每个字的隐藏状态。 HMM模型由dict/hmm_model.utf8提供。分词算法即viterbi算法。1
2hmmseg <- worker('hmm') #隐式马尔科夫模型(HMMSegment)
hmmseg[text]
混合模型(MixSegment)
是四个分词引擎里面分词效果较好的类,结它合使用最大概率法和隐式马尔科夫模型。1
2mixseg <- worker('mix') #混合模型(MixSegment)
mixseg[text]
索引模型(QuerySegment)
先使用混合模型进行切词,再对于切出来的较长的词,枚举句子中所有可能成词的情况,找出词库里存在。1
2queryseg <- worker('query') #索引模型(QuerySegment)
queryseg[text]
标注词性
可以使用 <=.tagger 或者 tag 来进行分词和词性标注,词性标注使用混合模型模型分词,标注采用和 ictclas 兼容的标记法。1
2tagseg <- worker('tag')
tagseg[text]
提取关键词
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径,使用方法与分词类似。topn参数为关键词的个数。1
2keys = worker('keywords', topn = 2) #参数topn表示提取排在最前的关键词个数
keys <= text
1 | keys <= "filename.txt" #同样的,也可以对文件进行关键词提取 |
simhash计算
对中文文档计算出对应的simhash值。simhash是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。Simhash引擎先进行分词和关键词提取,后计算Simhash值和海明距离。1
2simhasher = worker("simhash", topn = 2)
simhasher <= text
快速模式
无需使用函数worker(),使用默认参数启动引擎,并立即进行分词。使用qseg(quick segmentation),使用默认分词模式,自动建立分词引擎,类似于ggplot2包里面的qplot函数。1
qseg <= text
1 | worker('mix') #查看worker('mix')参数配置 |
实际上,第一次运行时,会启动默认引擎 quick_worker,相当于先运行了一遍代码:1
qseg = worker('mix')
- 可以通过qseg\$重设模型参数,重设模型参数将会修改以后每次默认启动的默认参数;
- 如果只是想临时修改模型参数,可以使用非快速模式的修改方式quick_worker\$。
1
2
3
4qseg$type = "mp" # 重设模型参数的同时,重新启动引擎;下次重新启动包时,现有的设置不会改变。
quick_worker$detect = T # 临时修改,下次重新启动包时,会恢复原来的默认设置。
get_qsegmodel() # 获得当前快速模式的默认参数