加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

R文本挖掘 | 如何在用户词库中添加搜狗词典?

发布时间:2021-03-15 11:07:26 所属栏目:大数据 来源:网络整理
导读:写 在前面 亲爱的小伙伴们!阔别大家将近10天,是不是等得有些着急了呢?本期大猫课堂将继续《R文本挖掘》系列,上节课中已经教大家 如何用jiebaR分词包进行分词 ,本期将教大家一个更加进阶的分词功能: 把搜狗专业词库添加进自己的用户自定义词典中。 稍微

在前面
亲爱的小伙伴们!阔别大家将近10天,是不是等得有些着急了呢?本期大猫课堂将继续《R文本挖掘》系列,上节课中已经教大家 如何用jiebaR分词包进行分词,本期将教大家一个更加进阶的分词功能: 把搜狗专业词库添加进自己的用户自定义词典中。

稍微对中文文本挖掘有所了解的小伙伴们都知道,虽然当前的分词统计模型已经具有了部分识别未登记词(没有录入到内置词库中的词)的能力,但是分词的好坏很大程度上仍旧取决于内置词库的的全面与准确性,这对一些专业领域来说尤其明显。以财政金融领域为例,“应付账款”是会计科目中的一个固有科目,应该被认为是一个词,但是如果词库不充分,可能就会被分成“应付”与“账款”两个词。同理,“头肩底”是用于描述K线的一个专用术语,但是一般的词库往往无法识别。

那么有没有什么办法有效获得大量的第三方专业词库呢?答案是肯定的, “搜狗细胞词库”为大家提供了大量的专业领域词汇。但是搜狗词库具有专门的.sel格式,词库导出与导入非常麻烦,这时,我们就要请出本期的主角: 搜狗细胞词库转化包cidian,它不仅能够在R中将搜狗细胞词库转化为可读的词库,并且还能直接被分词包jiebaR调用!

听着是不是非常酷炫?快点进入本期课堂吧!

期目标
一、了解如何从github上安装包

二、学习cidian包,并用cidian将单个搜狗词库转化为独立的.txt词库文件。

github上安装R包
下面讲解如何安装cidian包,包括一些cidian需要依附的其他包。需要注意的是,cidian包没有发布在CRAN中,而是发布在github.com中,安装需要使用install_github()函数。

注:github是世界上最大的第三方开源代码托管网站,许多R包的作者都把自己的代码放在github上进行托管与共享。

因为cidian没有经过CRAN发布,所以需要首先获得开发者工具才能进行安装。获得开发者工具的方法很简单,只要登陆https://cran.r-project.org/bin/windows/Rtools/,然后选择下载Rtools33就可以了(假设你现在的R版本是最新的)。

注:安装Rtools开发者工具,就好比,额,你root你的手机从而获得超级管理员权限一样……

R文本挖掘 | 如何在用户词库中添加搜狗词典?


接着,在安装cidian前,我们还需要先安装以下几个包:
1> install.packages("devtools")
2> install.packages("stringi")
3> install.packages("pbapply")
4> install.packages("Rcpp")
5> install.packages("RcppProgress")
1> “devtools”是一个R的开发者工具,由于cidian没有发布在CRAN上(可以认为是一个非正式的包),因此需要先安装开发者工具才能进行后续安装。

2> “stringi”是一个强大的字符处理包。

3> “pbapply”能够为*apply族函数增加进度条(progress bar)

4> “Rcpp”,“RcppProgress”能够让R直接调用外部的C++程序,大大增加运算速度(jieba本身就是一个C++库,jiebaR则是把这个C++库用R封装了)。

经过了这些铺垫,我们就可以安装cidian包了:
library(devtools)
install_github("qinwf/cidian")
其中,install_github()是用来从github上安装R包的函数,“qinwf”的意思则是,额,cidian作者的名字应该叫秦文峰……

备词库文件
搜狗细胞词库的下载地址为:http://pinyin.sogou.com/dict/。点进去后小伙伴们可以搜索自己要的词库,在这里我们假设要使用的词库是“财经金融词汇大全【官方推荐】”,如下:

R文本挖掘 | 如何在用户词库中添加搜狗词典?

小伙伴们点击“立即下载”就可以下载到本地,词库的扩展名是.sel。大猫已经下载了非常多金融类的词库,如下:

R文本挖掘 | 如何在用户词库中添加搜狗词典?


行转换
转换代码如下:
dir.path <- "C:/财经金融词汇大全【官方推荐】.scel"

decode_scel(scel = str_c(dir.path,".scel"),
? ? output = paste0(dir.path,".txt"),
? ? cpp = TRUE,
? ? progress = TRUE)
首先,我们建立变量dir.path用来保存词库的路径。注意,这里的路径需要带上扩展名!

其次, decode_scel()函数就是用来转换词库的关键函数——

参数scel用来给出细胞词库的路径(记住要带上扩展名哦);

output给出输出文件的路径,我们在这里把他放到了和原细胞词库同一个路径下面,并且将其扩展名改为.txt;

cpp = TRUE表示采用Rcpp(速度会更快)

progress = TRUE表示显示转换进度条。由于一般而言转换速度非常快,所以是否显示进度条意义不大。

最终,控制台输出告诉我们文件已经生成完毕:

R文本挖掘 | 如何在用户词库中添加搜狗词典?


转化后的txt词库文件的样子如下:

R文本挖掘 | 如何在用户词库中添加搜狗词典?


阶技巧
不知小伙伴们有没有发现, 目前大猫教大家的方法只适用于单一的词库,如果需要一次性导入几十个乃至几百个词库,总不可能把路径一个个用硬代码写出来把?此外, 如何把转化后的众多词库拼成一个单一的词库、并且去掉重复的词条呢?想知道更多技巧,请关注下一期的大猫的R语言课堂吧!
?

R文本挖掘 | 如何在用户词库中添加搜狗词典?

大猫的R语言课堂

我是 大猫,我是一个高中读文科但却在代码、数学的路上狂奔不止的Finance Ph. D Candidate。

我的微信号是iRoss2007

我的 R语言课堂关注R语言、数据挖掘以及经济金融学。

我与大家分享我的知识,我相信独乐乐不如众乐乐 。

我还有许多 好玩的计划。

更多的精彩内容正在路上。
长按二维码关注

R文本挖掘 | 如何在用户词库中添加搜狗词典?

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读