R中除了lijian大大的Rwordseg之外,还有哪些比较好用的分词工具?

不知道是不是之前tm包更新的原因,现在用Rwordseg分词之后再转化词频矩阵时总会出现“好 的”这样中间包含空格的“词语”,或者是“好\n的”这样的形式,不知道如何精确去除这些非文字的内容。

这个问题苦恼很久了,之前的解决方法是先建语料库然后分词,然后在建语料库,这样建立的词频矩阵不会出现上述情况,但是会有大量“c好的”这样的词(原因应该是分词后转化语料库时把“c()”作为字符了),并且效率比较低,3000篇文章尽然要分3分钟。

有大大有相关经验吗?

你用的R是哪个版本?语料3000篇文章大约多少字符?我在用R3.1.1时发现Rwordseg在处理大容量中文文本时,会有\n的情况,似乎不是与tm有关的问题,而是与R3.1.1兼容的问题

7 天 后

回复 第2楼 的 pmp55:我也出现过。我的解决方法如下,

for(i in 1:n){cor[[i]] <- list(segmentCN(corpus[[i]]))}
然后再重建语料库,替换掉字符“c”即可
cor<- Corpus(VectorSource(cor))<br />
for(i in 1:length(cor)){<br />
  cor[[i]]$content <- gsub("c", "", cor[[i]]$content)<br />
}<br />
。出现字符“c”的原因应该将字符标识c("a","b","c")中的c(非"c")放入其中了,因为其个数总是等于文档个数,也就是说每一个文档的第一词都会带有这个c。(表述可能让你难以理解)。</p>

ps:哪个版本的R没有这个问题?

回复 第3楼 的 ricklovelisa:亲 问下, package ‘Rwordseg’ is not available (for R version 3.1.1) 怎么破 万分感谢

6 天 后

回复 第4楼 的 wuhanzyb:source安装,参见李大大主页。http://jliblog.com/

3 个月 后
遇到了同样的问题呀,大神们怎么解决的,求教
症状如下
使用jiebaR对文档进行分词,分词结果存在D:/r dir/fenci/yuliaokuseg下,使用下面代码构建文档词条矩阵时,出现多词连在一起作为一个词条出现的情况,一直没有找到答案。
如分词结果为“总公司 所属 湖南”,本来该是三个词条,矩阵中的词条直接就是“总公司 所属 湖南”一个词条,但是把这几个词单独建个txt保存,做同样的操作,这几个词又能被分开。

qsj<- Corpus(DirSource("D:/r dir/fenci/yuliaokuseg",encoding="UTF-8",mode="text"))
qsj.dt<-DocumentTermMatrix(qsj,list(wordLengths=c(1,Inf)))
[未知用户]
用最古老的办法,不要安装,把老版本的LIBRARY直接复制到3.1.1的相应目录下即可。
6 天 后
[未知用户]

应该不是分词的问题,tm包好像对中文支持不太好,不用分词包,直接输中文也会有错:

library(tm)

xx<-c(
"进入", "一个", "平衡", "时代", "现在", "是", "住宅", "价格上涨",
"太快", "政府", "采用", "政策", "方式", "调控", "这些", "资金",
"就", "有", "往", "商业地产", "走", "的", "趋势", "因为", "商业地产",
"没有", "任何", "政治化", "的", "风险", "也", "没有", "社会舆论",
"压着", "政府", "调控", "它", "这种", "情况", "下", "资金", "的",
"流动", "情况", "就", "反", "了", "本来", "应该", "是", "更",
"多", "的", "资金", "和", "土地", "去", "建", "住房", "如果",
"现在", "的", "资金", "趋势", "要", "回流", "到", "商业地产",
"这", "实际上", "跟", "宏观调控", "的", "目的", "又", "背道而驰",
"了", "第二", "商业地产", "是", "一个", "专门", "的", "领域",
"跟", "开发", "住宅", "不", "一样", "做", "商业地产", "的", "开发商",
"好多", "都", "垮掉", "了", "奥运会", "之前", "北京市", "20",
"个", "烂尾楼", "全是", "商业地产", "商业地产", "经营", "不好",
"就是", "烂尾楼", "开发技术", "经验", "和", "开发", "住宅", "是",
"不", "一样", "的", "商业地产", "首要", "是", "地段", "要", "好",
"而", "住宅", "稍微", "远", "一点", "影响", "也", "不大", "三里屯",
"SOHO", "夏日", "庆典", "第一", "财经", "周刊", "王娜", "如果",
"你", "是", "眼下", "30", "多岁", "的", "白领", "您", "的", "目标",
"会", "是", "怎样", "的", "还有", "什么样", "的", "忠告", "送给",
"这个", "年龄", "的", "人", "潘石屹", "我", "不", "太", "喜欢",
"白领", "这个", "词", "这个", "词", "没有", "个性", "我们", "每个",
"人", "都", "是", "非常", "独特", "的", "笼统", "地用", "一个",
"词去", "定位", "我", "相信", "稍微", "有", "一点", "个性", "的",
"人", "都", "会", "反感", "这样", "一个", "词", "都", "会", "反感",
"把", "自己", "划分", "到", "这", "一类", "去", "从", "职业",
"来说", "我", "可能", "是", "设计师", "医生", "老师", "记者",
"那", "我", "就", "做", "一个", "好", "的", "记者", "好", "的",
"医生", "这是", "社会", "上", "需要", "的", "现在", "这个", "时代",
"确实", "是", "一个", "特别", "好", "的", "时代", "也", "是")

corpus = Corpus(VectorSource(xx))
dtm_psy = TermDocumentMatrix(corpus)
tdm = DocumentTermMatrix(corpus,control = list(wordLengths = c(1, Inf)))
inspect(tdm)

Terms
Docs 20 30 soho 奥运会\n 把\n 白领 北京市\n 背道而驰 本来 不\n 不大 不好 财经 采用
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

[未知用户]

可以通过再套一层list的方法在高版本解决这个问题,只是每个list的第一个单词会有一个c,需要sub去掉。
xx <- list(xx)
corpus = Corpus(VectorSource(xx))
dtm_psy = TermDocumentMatrix(corpus)
tdm = DocumentTermMatrix(corpus,control = list(wordLengths = c(1, Inf)))
inspect(tdm)
18 天 后
[未知用户]
我在R3.1.2,tm0.6中试的不行,不知道你用的是什么版本
1 个月 后
回复 3 楼ricklovelisa
[未知用户]
for(i in 1:n){cor[] <- list(segmentCN(corpus[]))}

用这个会出现问题: 错误于segmentCN(corpus[]) : Please input character!
求助
[未知用户]
请问如何先建语料库后再分词