jiebaR 中文分词

GitHub v0.6

一、增强:分词、词性标注时,增加过滤停止词功能,默认的 STOPPATH 路径将不会被使用,不默认使用停止词库。需要自定义其他路径,停止词才能在分词时使用。停止词库的编码需要为 UTF-8 格式,否则读入的数据可能为乱码。

cutter = worker()
cutter
# Worker Type:  Mix Segment

# Fixed Model Components:  
# ...

# $stop_word
# NULL

# $timestamp
# [1] 1442716020

# $detect $encoding $symbol $output $write $lines $bylines can be reset
cutter = worker(stop_word="../stop.txt")
cutter
# Worker Type:  Mix Segment

# Fixed Model Components:  
# ...

# $stop_word
# [1] "../stop.txt"

# $timestamp
# [1] 1442716020

# $detect $encoding $symbol $output $write $lines $bylines can be reset.

二、增强:分词时,symbol = FALSE 时,2010-10-1220.2 类似格式的文本中的符号会被保留。单纯的符号将会被过滤。

cutter = worker()
cutter$symbol = F
cutter["2010-10-10"]

三、增加:freq() 进行词频统计,输入内容为文本向量,输出内容为文本频率的数据框。

freq(c("测试", "测试", "文本"))

四、增强:filter_segment() 现在可以输入以文本向量为内容的 list。

cutter = worker()
result_segment = list(    cutter["我是测试文本,用于测试过滤分词效果。"], 
                      cutter["我是测试文本,用于测试过滤分词效果。"])
result_segment
filter_words  = c("我","你","它","大家")
filter_segment(result_segment,filter_words)

五、修复 :filter_segment() 可能会出现删除非停止词。

六、增加:filter_segment() 增加unit 选项。

处理文本时,停止词数量较多时 ,生成的正则表达式超过 265 bytes ,R 可能会报错。通过 unit 选项可以对于较多的停止词分多次处理,控制每次识别的停止词的个数,控制生成的正则表达式的长度。unit 默认值为 50,一般不需要修改 unit 的默认值。

help(regex)

Long regular expressions may or may not be accepted: the POSIX standard only requires up to 256 bytes.

filter_segment(result_segment,filter_words) # 使用默认值,一般不需要修改。

filter_segment(result_segment,filter_words, unit=10) # 如果你有较多文本长度很长的停止词词条

七、增加: C API,可以在其他 R 包调用本包的 C 接口。

// inst/include/jiebaRAPI.h
SEXP jiebaR_filecoding(SEXP fileSEXP);

SEXP jiebaR_mp_ptr(SEXP dictSEXP, SEXP userSEXP); 

....

GitHub v0.4.2

一、 增加:过滤分词结果的方法 filter_segment(),类似于关键词提取中使用的停止词功能。

cutter = worker()
result_segment = cutter["我是测试文本,用于测试过滤分词效果。"]
result_segment
[1] "我"   "是"   "测试" "文本" "用于" "测试" "过滤" "分词" "效果"
filter_words = c("我","你","它","大家")
filter_segment(result_segment,filter_words)
[1] "是"   "测试" "文本" "用于" "测试" "过滤" "分词" "效果"

二、 增强:分词支持 “向量文本输入 => list输出” 与 “按行输入文件 => list输出”

通过 bylines 选项控制是否按行输出,默认值为bylines = FALSE

cutter = worker(bylines = TRUE)
cutter
Worker Type:  Mix Segment

Detect Encoding :  TRUE
Default Encoding:  UTF-8
Keep Symbols    :  FALSE
Output Path     :  
Write File      :  TRUE
By Lines        :  TRUE
Max Read Lines  :  1e+05
....
cutter[c("这是非常的好","大家好才是真的好")]
[[1]]
[1] "这是" "非常" "的"   "好"  

[[2]]
[1] "大家" "好"   "才"   "是"   "真的" "好"
cutter$write = FALSE

# 输入文件文本是:
# 这是一个分行测试文本
# 用于测试分行的输出结果

cutter["files.path"]
[[1]]
[1] "这是" "一个" "分行" "测试" "文本" 

[[2]]
[1] "用于" "测试" "分行"   "的" "输出" "结果"
# 按行写入文件
cutter$write = TRUE
cutter$bylines = TRUE

三、增加:可以使用 vector_keywords 对一个文本向量提取关键词。

keyworker = worker("keywords")
cutter = worker()
vector_keywords(cutter["这是一个比较长的测试文本。"],keyworker)
8.94485 7.14724 4.77176 4.29163 2.81755 
 "文本"  "测试"  "比较"  "这是"  "一个"
vector_keywords(c("今天","天气","真的","十分","不错","的","感觉"),keyworker)
6.45994 6.18823 5.64148 5.63374 4.99212 
 "天气"  "不错"  "感觉"  "真的"  "今天"

四、增加: write = "NOFILE" 选项,不检查文件路径。

cutter = worker(write = "NOFILE",symbol = TRUE)
cutter["./test.txt"] # 目录下有test.txt 文件
[1] "."    "/"    "test" "."    "txt"