R 的 tau 包中的 textcnt 函数有一个 split 参数,它的默认值是 split = "[[:space:][:punct:][:digit:]]+" ç 这个 argumet 也使用撇号 ' 拆分成单词,我不想那样,我怎么修改参数所以它不使用撇号来拆分单词?
此代码:
`图书馆(头) 文本<-"I don't want the function to use the ' to split"
textcnt(text, split = "[[:space:][:punct:][:digit:]]+",method="string",n=1L)`
产生这个输出:
don function i split t the to use want
1 1 1 1 1 2 2 1 1
而不是 don 1 和 t 1,我想保留 don't 作为 1 个词
我尝试使用 str_replace_all 从 stringr 中预先删除标点符号,然后省略 textcnt 中参数的标点部分,但它不使用所有类型的符号,如 & > 或 " 来拆分,我试图修改split 参数但是它根本不拆分句子或者它保留符号
谢谢
基于 PCRE 的函数你需要使用
split = "(?:(?!')[[:space:][:punct:][:digit:]])+|'\\B|\\B'"
这里,
(?:
- 容器非捕获组的开始:(?!')
- 如果下一个字符是 '
char[[:space:][:punct:][:digit:]]
- 匹配空格、标点符号或数字字符)+
- 匹配一次或多次(连续)'\B
- 一个 '
字符,后跟字符串的任一端或非单词字符|
- 或\B'
- '
前面是字符串开头或非单词字符。具有
stringr
功能,您可以使用
split = "[[:space:][:punct:][:digit:]--[']]+|'\\B|\\B'"
在这里,
[[:space:][:punct:][:digit:]--[']]
匹配除 [[:space:][:punct:][:digit:]]
字符外的所有由 '
匹配的字符。
stringr
ICU regex flavor supports character class subtraction using this notation.