首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R文本挖掘 | 如何在用户词库中添加搜狗词典?

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

作者头像
用户7652506
发布于 2020-10-23 08:25:31
发布于 2020-10-23 08:25:31
5.3K0
举报

在前面

亲爱的小伙伴们!阔别大家将近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你的手机从而获得超级管理员权限一样……

接着,在安装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/。点进去后小伙伴们可以搜索自己要的词库,在这里我们假设要使用的词库是“财经金融词汇大全【官方推荐】”,如下:

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

行转换

转换代码如下:

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表示显示转换进度条。由于一般而言转换速度非常快,所以是否显示进度条意义不大。

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

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

阶技巧

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的R语言课堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
聊聊Asp.net Core中如何做服务的熔断与降级
而对于微服务来说,熔断就是我们常说的“保险丝”,意为当服务出现某些状况时,切断服务,从而防止应用程序不断地尝试执行可能会失败的操作造成系统的“雪崩”;或者大量的超时等待导致系统卡死等情况,很多地方也将其成为“过载保护”。
乔达摩@嘿
2023/07/21
4730
聊聊Asp.net Core中如何做服务的熔断与降级
如何解决EnterLib异常处理框架最大的局限——基于异常"类型"的异常处理策略
个人觉得EnterLib的EHAB(Exception Handling Application Block)是一个不错的异常处理框架,借助于EHAB,我们可以配置的方式来自定义异常处理策略,从而带来最大的灵活性和可维护性。但是,在我看来,EHAB有一个最大的局限,把就是异常处理策略的粒度过大——只能提供基于异常类型级别。本篇文章通过一个自定义ExceptionHandler很好地解决了这个问题。 一、EnterLib基于异常类型的异常处理策略 EnterLib的异常处理策略基本上可以通过这样的的公式来表示
蒋金楠
2018/01/16
1.4K0
重试组件使用与原理分析(一)-spring-retry
在日常开发中,我们很多时候都需要调用二方或者三方服务和接口,外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。
叔牙
2020/11/19
3.9K0
重试组件使用与原理分析(一)-spring-retry
Spring-Retry重试实现原理
Spring实现了一套重试机制,功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,Spring Integration, Spring for Apache Hadoop等Spring项目。本文将讲述如何使用Spring Retry及其实现原理。
程序猿DD
2020/12/08
1.9K0
Spring-Retry重试实现原理
Spring-Retry重试实现原理,有点东西哈
> 公众号:[Java小咖秀](https://t.1yb.co/jwkk),网站:[javaxks.com](https://www.javaxks.com)
Java小咖秀
2021/03/24
9600
集成EntLib实现ASP.NET MVC的异常处理[续篇]
在《集成EntLib实现ASP.NET MVC的异常处理》我们实现采用EntLib的Exception Handling Application Block(EHAB)进行异常的处理,并导向指定的出错页面。在这篇文章中我们做一些改变,直接将处理过的异常消息显示在本页的ValidationSummary中。[源代码从这里下载] 一、扩展的Controller:ExtendedController 我们创建一个ExtendedController基类来实现基于EntLib的EHAB的异常处理。如下面的代码所是,
蒋金楠
2018/01/15
8110
集成EntLib实现ASP.NET MVC的异常处理[续篇]
ASP.NET MVC下基于异常处理的完整解决方案
EntLib的异常处理应用块(Exception Handling Application Block)是一个不错的异常处理框架,它使我们可以采用配置的方式来定义异常处理策略。而ASP.NET MVC是一个极具可扩展开发框架,在这篇文章中我将通过它的扩展实现与EntLib的集成,并提供一个完整的解决异常处理解决方案。[源代码从这里下载] 目录 一、基本异常处理策略 二、通过自定义Action处理异常 三、通过配置的Error View处理异常 四、自定
蒋金楠
2018/02/07
1.3K0
ASP.NET MVC下基于异常处理的完整解决方案
使用Autofac IOC组织多项目应用程序
较复杂的应用程序都是由多个项目组织成的,项目可以划分成程序集(Assemblies)和宿主(Hosts),也就是应用程序的入口。 Assemblies 通常是常见的类库项目,包括可以重用的功能和方便测试,通常包括下面的组件: Views, Controllers 和 Models 服务 持久类 和 repositories Decorators Reusable user controls 规则库 业务逻辑 这些项目通常不应该直接依赖于下面的组件: IoC 容器程序集; 日志记录框架 ;
张善友
2018/01/19
9260
Reactor详解之:异常处理
不管是在响应式编程还是普通的程序设计中,异常处理都是一个非常重要的方面。今天将会给大家介绍Reactor中异常的处理流程。
程序那些事
2020/11/17
2.3K0
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
  在广义的解释中,熔断主要是指为控制股票、期货或其他金融衍生产品的交易风险,为其单日价格波动幅度规定区间限制,一旦成交价触及区间上下限,交易则自动中断一段时间(“熔即断”),或就此“躺平”而不得超过上限或下限(“熔而不断”)。
Edison Zhou
2018/08/07
2.1K0
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
如何编写没有Try/Catch的程序
在上面一篇文章《谈谈关于MVP模式中V-P交互问题》中,我提到最近一直为一个项目进行Code Review的工作,从中发现了一些问题,同时也有了一些想法。上次谈到如何正确编写服务MVP规范的程序,这次我们来关注一个我们每天都会面对的问题:异常处理。 一、异常处理不简单 个人觉得,异常处理对于程序员来说,尤其是对于那些初级.NET程序员来说,是最为熟悉的同时也是最难掌握的。说它熟悉,因为仅仅就是Try/Catch而已。说它难以掌握,很多开发人员却说不清楚Try/Catch应该置于何处?什么情况下需要对异常进行
蒋金楠
2018/01/16
1K0
如何编写没有Try/Catch的程序
ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
个人觉得异常处理对于程序员来说是最为熟悉的同时也是最难掌握的。说它熟悉,因为仅仅就是try/catch/finally而已。说它难以掌握,则是因为很多开发人员却说不清楚try/catch/finally应该置于何处?什么情况下需要对异常进行日志记录?什么情况下需要对异常进行封装?什么情况下需要对异常进行替换?对于捕获的异常,在什么情况下需要将其再次抛出?什么情况下则不需要? 合理的异常处理应该是场景驱动的,在不同的场景下,采用的异常处理策略往往是不同的。异常处理的策略应该是可配置的,因为应用程序出现怎样的异
蒋金楠
2018/01/15
1.3K0
ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
java retry(重试) spring retry, guava retrying 详解
转载 自 http://blog.51cto.com/9250070/2156431
allsmallpig
2021/02/25
1.6K0
微服务组件--限流框架Spring Cloud Hystrix详解
【1】Hystrix是springCloud的组件之一,Hystrix 可以让我们在分布式系统中对服务间的调用进行控制加入一些调用延迟或者依赖故障的容错机制。
忧愁的chafry
2022/10/30
4K0
微服务组件--限流框架Spring Cloud Hystrix详解
初探Spring Retry
在与外部系统交互时,由网络抖动亦或是外部系统自身的短暂性问题触发的瞬时性故障是一个绕不过的坑,而重试可能是一个比较有效的避坑方案;但有一点需要特别注意:外部系统的接口是否满足幂等性,比如:尽管调用外部系统的下单接口超时了,但外部系统订单数据可能已经落库了,这个时候再重试一次,外部系统内的订单数据可能就重复了!
程序猿杜小头
2022/12/01
1.2K0
初探Spring Retry
集成EntLib实现ASP.NET MVC的异常处理
本篇通过自定义ASP.NET MVC的异常筛选器实现了与EntLib的EHAB(Exception Handling Application Block)的集成,使我们可以通过配置的方式来定义异常处理策略,并最终通过错误页面显示被处理过的异常信息。[源代码从这里下载] 我们知道ASP.NET MVC具有一个类型为HandleErrorAttribute的异常筛选器可以起到错误页面的导向作用。在这里我直接让我们自定义的异常筛选器继承它,为此我们定义了如下一个名称为ExtendedHandleErrorAttr
蒋金楠
2018/01/15
7840
集成EntLib实现ASP.NET MVC的异常处理
Kotlin Coroutines Flow 系列(三) 异常处理
上一篇文章Flow VS RxJava2曾讲述过 onCompletion 操作符。
fengzhizi715
2020/02/19
2K0
.NET 5 中使用 Consul+Ocelot+Polly缓存、限流、熔断、降级
链接:cnblogs.com/wei325/archive/2021/09/27/15308498.html
郑子铭
2021/11/10
1.9K0
.NET 5 中使用 Consul+Ocelot+Polly缓存、限流、熔断、降级
Java 异常处理的 20 个最佳实践,你知道几个?
异常处理是 Java 开发中的一个重要部分,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java 提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建于语言自身之中。Java 编程语言也允许创建新的自定义异常,并通过使用 throw 和 throws关键字抛出它们。在Java编程中,Java 的异常处理不单单是知道语法这么简单,它必须遵循标准的 JDK 库,和处理错误和异常的开源代码。
武培轩
2019/10/28
9330
Java 异常处理的 20 个最佳实践,你知道几个?
让异常处理代码更健壮
来源:dzone.com/articles/good-exception-handling
芋道源码
2019/11/15
6120
相关推荐
聊聊Asp.net Core中如何做服务的熔断与降级
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入云原生工作实战群
云原生落地实践 技术难题攻坚探讨
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档