R语言笔记⑨——本文挖掘

文本挖掘

若要机器对文本进行理解,就需要对文本进行分词,进而变成机器可以理解的单个词语。在处理大量文档的是否,还需要进行词语向量化,进而进行后面的文本挖掘计算。

Rwordseg包

如果想要安装Rwordseg包需要先安装rjava包,rjava包的安装需要jre环境。Rwordseg包中文分词最显著的特点是它会先将标量符号去除,再进行分词,这样处理的结果是可能标点符号前后的文字会连起来影响分词效果。

下面是一个简单分词操作

> text <- "R是用于统计分析、绘图的语言和操作环境"
> words <- segmentCN(text)
> words
 [1] "R"    "是"   "用于" "统计" "分析" "绘图" "的"   "语言" "和"   "操作" "环境"

有时候我们会发现通过segmentCN函数分词后的结果并不是很理想,有一些词语本应该被分词结果没有被分词,有些词语本不应该被分词结果被分词。

这个时候我们可以加入我们自定义的词语,就比如上面那一句话,其中操作环境本应该是一个完整的词语,结果被分为两个词语,显然不正确。这样我们可以将“操作环境”加入我们的分词库中,我们需要通过insertWords函数加入我们自定义的词语。

> insertWords('操作环境')
> segmentCN(text)
 [1] "R"    "是"   "用于" "统计" "分析" "绘图" "的"   "语言" "和"   "操作环境"

可以发现操作环境已经可以被分词出来了,不过这种加入自定义词语只是保存在内存中,一旦关闭我们的IEDA就失效了。

如果我们想要把之前我们加入的自定义词语删除,可以通过deleteWords函数删除词语。

> deleteWords('操作环境')

有些时候我们不需要自己手动去添加自定义词语,我们可以直接添加别人写好的词典。那样我们就可以直接使用词典中的词语进行分词。

installDict(dictpath,dicname,dicttype=c("text","scel"),load=TRUE)
  • dictname:自定义词典的名称(英文)
  • dicttype:默认是txt
  • load:表示安装后是否自动加载到内存,默认是TRUE

还可以通过listDict函数显示安装的词典,通过uninstallDict函数删除安装的词典。

jieba包

“结巴”中文分词的R语言版本,支持最大概率法,隐式马尔科夫模型,索引模型,混合模型,共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。项目使用了Rcpp和CppJieba进行开发。

我们需要安装两个包,分别是jiebaED和jiebaR

install.packages("jiebaRD")
install.packages("jiebaR")
  • 简单的分词示例
> text <- "与其说R是一种统计软件,还不如说R是一种数学计算的环境"
> seg <- worker()
> segment(text,seg)
 [1] "与其说"   "R"        "是"       "一种"     "统计"     "软件"     "还"      
 [8] "不如说"   "R"        "是"       "一种"     "数学计算" "的"       "环境" 

除此之外,我们还可以使用下面这种方式实现分词,<=就相当于分词运算符

> seg <= text
 [1] "与其说"   "R"        "是"       "一种"     "统计"     "软件"     "还"      
 [8] "不如说"   "R"        "是"       "一种"     "数学计算" "的"       "环境"  
  • 词性标注
> seg <- worker("tag")
> segment(text,seg)
         c          x          v          m          v          n          d          l 
  "与其说"        "R"       "是"     "一种"     "统计"     "软件"       "还"   "不如说" 
         x          v          m          n         uj          n 
       "R"       "是"     "一种" "数学计算"       "的"     "环境" 
  • 关键词提取

关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径,使用方法与分词类似。

> text <- "我是中国人"
> seg2 <- worker('keywords',topn = 1)
> segment(text,seg2)
3.02732
"中国"

其中topn参数设置的是提取的关键词的个数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值