R语言自然语言处理:中文分词
作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。
邮箱:huang.tian-yuan@qq.com
R有很多自然语言处理的包,但是大多是针对英文的。中文来做NLP的包,经过长期探索,认为目前要做中文的NLP,首推jiebaR包。本文主要讲如何对中文进行分词,分词的概念就是把一个句子分成词语。如果在英文中,词语之间都有空格,因此分词非常简单。但是中文都连在一起,因此必须用一定的算法来分开。 举例:
英文:“R is my favorite programming language.”
中文:“R语言是我最喜爱的编程语言。”
现在,我们利用jiebaR包对这句话进行分词。
快速入门
首先,加载必要的包
1library(pacman)
2p_load(jiebaR)
然后,我们马上对句子进行分词。
1en = "R is my favorite programming language."
2cn = "R语言是我最喜爱的编程语言"
3
4worker() -> wk
5segment(en,wk)
6
7## [1] "R" "is" "my" "favorite" "programming"
8## [6] "language"
看出来了吧,英文分词根本没有难度,可以直接用空格分开所有组分。下面来看中文:
1segment(cn,wk)
2
3## [1] "R" "语言" "是" "我" "最" "喜爱" "的"
4## [7] "编程语言"
美中不足的地方是,“R”和“语言”分了开来。
自定义词典
不过有的时候,如果没有自定义词典,有的词是无论如何分不对的。打个比方,如果“爸爸去哪儿”是一个词,但是分词的时候一般很难分出来。此外,我们的“R语言”也被分为了两部分。这样分词是不对的,为了让这种情况不再发生,我们必须自定义词典。首先,要看词典在哪里。
1show_dictpath()
2
3## [1] "F:/R-3.5.2/library/jiebaRD/dict"
来到这个路径下,然后对“user.dict.utf8”这个文件进行更改。使用记事本打开,然后在最后补上词条,也就是“R语言”。现在再来进行分词(不过我们要重新定义worker才能更新):
1worker() -> wk
2
3segment(cn,wk)
4
5## [1] "R语言" "是" "我" "最" "喜爱" "的"
6## [7] "编程语言"
这次R语言已经变成了一个词组。 事实上,中文一直在变化,想要用一个算法就永远解决分词的问题,是不存在的(我从来没有更改过分词的模式,因为默认的情况已经足够解决大多数问题)。但是我们可以定期更新我们词库,从而让分词的效果能够维持在比较高的水平。
获取更多的字典
所以我们知道我们想要更多的词典,得到海量能够跟得上时代发展的词。有什么办法?我认为能够得到大量新词的地方,有两个:1.搜索引擎;2.输入法。搜狗输入法在搜狗词胞库中提供了大量的词典(https://pinyin.sogou.com/dict/),大家可以自由下载。不过下载的文件格式是以“.scel”为后缀的,双击一般就给我们的输入法补充了一个词库,但是没法让我们的jiebaR直接利用。幸好jiebaR的作者为我们提供了转格式工具,能够把scel文件直接转化为.utf8格式的文本文件,从而直接对这些词进行利用。具体内容可以参照https://github.com/qinwf/cidian,这里给出懒人加载的版本。
1p_load(devtools,stringi,pbapply,Rcpp,RcppProgress)
2install_github("qinwf/cidian")
那么,大家就可以愉快地使用一个简单的函数来进行转格式了:
1decode_scel(scel = "细胞词库路径", output = "输出文件路径", cpp = TRUE)
关于更多个性化的用法,大家可以去官网查询。
小
结
我认为至此,中文分词已经足够好用。我相信大神永远能够对算法进行革新,从而让分词更加准确。可惜我本人没学习过分词算法,没有办法在算法的层面来做一些事情。但是想办法得到自己想要得到的目标关键词词库,还是相对简单的,这样一来我们已经解决了大部分垂直领域的问题。
往期精彩:
R语言基于S3的面向对象编程
R语言信用评分卡:探索性数据分析
R语言中文社区2018年终文章整理(作者篇)
R语言中文社区2018年终文章整理(类型篇)
公众号后台回复关键字即可学习
回复 爬虫 爬虫三大案例实战
回复 Python 1小时破冰入门
回复 数据挖掘 R语言入门及数据挖掘
回复 人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法 常用数据挖掘算法
给我【好看】
你也越好看!
R语言自然语言处理:中文分词相关推荐
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
笔者寄语:与前面的RsowballC分词不同的地方在于这是一个中文的分词包,简单易懂,分词是一个非常重要的步骤,可以通过一些字典,进行特定分词.大致分析步骤如下: 数据导入--选择分词字典--分词 但 ...
- 自然语言处理-中文分词相关算法(MM、RMM、BMM、HMM)
文章目录 一.前言 二.分词算法 2.1 规则分词 2.1.1 正向最大匹配法 2.1.2 逆向最大匹配法 2.1.3 双向最大匹配法 2.2 统计分词 2.2.1 语言模型 2.2.2 HMM模型 ...
- Code Clinic: R 代码诊所:R语言 Lynda课程中文字幕
Code Clinic: R 中文字幕 代码诊所:R语言 中文字幕Code Clinic: R 成功的程序员不仅仅知道如何编码 他们也知道如何思考解决问题 Code Clinic是一系列课程,我们的教 ...
- R语言读取 文件 中文乱码,R语言画图 中文不显示
R语言 读入excel文件:用openxlsx install.packages(openxlsx) library(openxlsx) a<-read.xlsx("exercise1 ...
- 如何在R语言中进行中文编程
又发现了个好玩的hiahiahia: 给四个例子,大家看了例子应该都能会用中文写r语言: 例1 预定义: # 定义函数 "生成正态分布随机数"<-function(数量=1, ...
- R语言做文本挖掘 Part2分词处理
Part2分词处理 [发现有人转载,决定把格式什么重新整理一遍,有时间做个进阶版文本挖掘,恩!原文地址:CSDN-R语言做文本挖掘 Part2分词处理] 在RStudio中安装完相关软件包之后,才能做 ...
- R语言:读取中文数据乱码的解决方案
R语言不是中国人开发的,自然对中文的处理上没有特别考虑,但是我们依然可以处理. 下面我给出了解决方案.但我想,别的读取解决方案应该也是一样的.不信,可以看我的下一篇文章对各种类型的中文数据的读取. 一 ...
- python语言常用的中文分词第三方库是_基于boost使用Python调用NLPIR(ICTCLAS2013)中文分词组件...
最近需要用到中文分词,本来想省事,用python的第三方库结巴分词,但看了下API,计算文本关键词的方法没有没有返回关键字对应的权值,翻了下文档应该是不还不支持,只好继续使用中科院的那套ICTCLAS ...
- R语言实战(中文完整版)pdf
下载地址:网盘下载 内容简介 · · · · · · 数据时代已经到来,但数据分析.数据挖掘人才却十分短缺.由于"大数据"对每个领域的决定性影响, 相对于经验和直觉,在商业.经济 ...
- c语言西文空格,中文分词入门之最大匹配法
中文分词在中文信息处理中是最最基础的,无论机器翻译亦或信息检索还是其他相关应用,如果涉及中文,都离不开中文分词,因此中文分词具有极高的地位.中文分词入门最简单应该是最大匹配法了,当年师兄布置给我的第一 ...
最新文章
- 【杂谈】如何应对烦人的开源库版本依赖-做一个心平气和的程序员?
- Qt CMake命令参考
- 一种类的渐进式开发写法
- 阿里云ECI如何6秒扩容3000容器实例?
- 538.把二叉搜索树转换为累加树(结合自己的理解解释一下别人题解的递归部分)
- java 调用c++ jni_Java中使用JNI调用C++
- 关于cmp函数参数中的符号(转)
- 快速排序(java版)
- fortran调用MKL函数库中的gemm的fortran95接口计算矩阵相乘
- 100套Java毕业设计和课程设计项目案例(包含项目源码)
- 中级通信工程师证书会过期吗
- 大咖分享|王建峰:数据指标管理体系建设实践分享
- 计算机音乐对应的数字,音乐和数字之间的关系
- 结构体初始化、结构体指针、结构体数组
- python网络爬虫之淘宝订单提取
- sentinel只有实时监控不显示
- 分析PostLateUpdate.FinishFrameRendering()。每帧渲染时间截然不同
- 强化学习(一) - 基础认知
- 前端常见提交数据方式对比
- 使用Excel进行时间转换(附时间小知识)
热门文章
- 太牛逼了!这个开源项目,可以把我从视频中移除!
- 日志框架选型,Logback 还是 Log4j2?
- 真赞!阿里开源的这款分布式事务框架,不愧为民族之光
- 基本操作?这46个 Linux 面试常见问题送给你
- Python 密集知识点汇总
- 别轻易接受父母的建议
- 科学计算机统计模式中中间数据输错怎么办,科学计算器在统计功能中如何清除以前不需要的数据?...
- pythonforeverybody中文版_PyTorch实现EverybodyDanceNow
- 小程序之旅——第四站(模板框架)
- mybatis入门截图四(订单商品数据模型-懒加载-缓存)