总结:中文分词 Rworseg包的应用

前面安装了Rwordseg包,这个包的工作方式:
“Rwordseg”在分词之前会去掉文本中所有的(中文)符号,这样就会造成原分开的句子前后相连,本来分开的两个字也许连在了一起。

另外一个中文分词包“jieba”分词包不会去掉任何符号,而且返回的结果里也会有符号。所有小文本准确性上可能”Rwordseg”会有误差。

Rwordseg分词原理:
Rwordseg是一个R环境下的中文分词工具,使用rjava调用java分词工具Ansj。

该分词算法有以下几个步骤:
1.全切分,原子切分;
2.N最短路径的粗切分,根据隐马尔科夫模型和viterbi算法,达到最优路径的规划;
3.人名识别;
4.系统词典补充;
5.用户自定义词典的补充;
6.词性标注。

影响分词效果的主要因素:分词词典的使用。

1.搜狗分词包

 从搜狗词库下载分词词典
 [搜狗下载官网](http://pinyin.sogou.com/dict/cate/index/101)
  不能直接将下载d的~.scel改为~.txt格式

 # 加载词典
 installDict("E:/wyeth/互联网.scel","internet",dicttype = "scel")  

installDict函数介绍
installDict(dictpath, dictname, dicttype = c(“text”,”scel”), load = TRUE)

2.自定义词典

可以自己设定哪些关键词,也可以删除已经加入词库的一些关键词。

#手动添加或删除词汇,仅在内存中临时添加,未记录下来

segmentCN(“过氧化苯酰胺少量抹在皮肤”)
[1] “过” “氧化” “苯” “酰” “胺” “少量抹” “在” “皮肤”
insertWords(“过氧化苯酰胺”)
segmentCN(“过氧化苯酰胺少量抹在皮肤”)
[1] “过氧化苯酰胺” “少量抹” “在” “皮肤”

deleteWords(“过氧化苯酰胺”)
segmentCN(“过氧化苯酰胺少量抹在皮肤”)
[1] “过” “氧化” “苯” “酰” “胺” “少量抹” “在” “皮肤”

使用save参数把操作记录下来,下回启动直接使用

insertWords(“过氧化苯酰胺”, save = TRUE)
segmentCN(“过氧化苯酰胺少量抹在脸上”)
[1] “过氧化苯酰胺” “少量抹” “在” “脸上”

3.分词

关键函数segmentCN()

   #segmentCN函数解释  
segmentCN(strwords,  
          analyzer = get("Analyzer", envir = .RwordsegEnv),  
          nature = FALSE, nosymbol = TRUE,  
          returnType = c("vector", "tm"), isfast = FALSE,  
          outfile = "", blocklines = 1000)  

    #strwords:中文句子  
    #analyzer:分析的java对象  
    #nature:是否识别词组的词性(动词、形容词)  
    #nosymbol:是否保留句子符号  
    #returnType:默认是一个字符串,也可以保存成其他的样式,比如tm格式,以供tm包分析  
    #isfast:“否”代表划分成一个个字符,“是”代表保留句子,只是断句  
    #outfile:如果输入是一个文件,文件的路径是啥  
    #blocklines:一行的最大读入字符数  

分词时候的原则是,如果该词是默认词典里面的,那么优先分出来。

4.关于人名的分词

参数isNameRecognition 可用于人名的识别

> getOption("isNameRecognition")
 [1] FALSE
> segmentCN("梅超风不是是桃花岛岛主")
 [1] "梅"   "超"   "风"   "不"   "是"   "是"   "桃花" "岛"   "岛"   "主"  
> segment.options(isNameRecognition = TRUE)
> getOption("isNameRecognition")
[1] TRUE
> segmentCN("梅超风不是是桃花岛岛主")
[1] "梅超风" "不"     "是"     "是"     "桃花"   "岛"     "岛"     "主"    

数字识别(isNumRecognition,默认为TRUE,默认识别数字);
量词识别(isQuantifierRecognition,默认为TRUE,默认识别量词)

你可能感兴趣的:(R,programing)