当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放

人们说话不是一个词一个词崩出来的,文章也就由句子组成。要想让机器识别美文,体会中华名族汉语的博大精深,不是不可能。但是,首先需要将其转化成其可以识别的模式——词语。分词是自然语言处理(NLP)中最底层、最基本的模块,分词精度的好坏将直接影响文本分析的结果。

这里介绍著名的分词方法:结巴分词以及基本分词方法在Python和R语言中的用法。

Python中的结巴分词

Python中文分词的三种常用模式

精确模式:

全模式

搜索引擎模式

三种模式默认都采用隐马尔科夫模型分词;同时,结巴分词支持繁体分词和自定义字典方法。

导入模块:import jieba

(1)、精确模式:

>>> test = '十堰有道家发源地武当山'

>>> cut1 = jieba.cut(test)

>>> type(cut1)

>>> print('精确分词结果:',' '.join(cut1))

Cut1不能直接查看,‘ ‘.join(cut1)函数指用空格分开cut1里面的元素,然后通过print()函数才能查看。

精确分词结果: 十堰 有 道家 发源地 武当山

(2)、全模式:

>>> cut2 = jieba.cut(test,cut_all = True)

>>> print('全模式分词结果:',' '.join(cut2))

全模式分词结果: 十堰 有 道家 发源 发源地 源地 武当 武当山

把所有可能的词都考虑进来了。“精确模式”其实有默认参数cut_all = False。显然,全模式不管分词后意思会不会有歧义,只管快速分出所有可能的词,不适合做文本分析。

(3)、搜索引擎模式:

>>> cut3 = jieba.cut_for_search(test)

>>> print('搜索引擎模式分词结果:',' '.join(cut3))

搜索引擎模式分词结果: 十堰 有 道家 发源 源地 发源地 武当 武当山

搜索引擎模式也会给出所有可能的分词结果,但是搜索引擎模式对于词典中不存在的词,比如一些很少见、新词,却能给出正确的分词结果。

添加自定义词典

Path = ‘词典路径’

jieba.load_userdict (path2)

然后分词即可。

提取关键词

对于一篇文章,提取关键词,比如指定提取5个关键词:

jieba.analyse.extract_tags(dat,topK = 5)

注意:亲测,词典一般是.txt,默认是ASCII格式,应该另存为utf8模式,为什么?——有中文。其实,帮助文档里面有的。

更多用法:help('jieba')获得更多详细介绍。

R语言结巴分词

"结巴"中文分词的R语言版本,支持最大概率法,隐式马尔科夫模型,索引模型,混合模型,共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。

包的下载与安装:

>install.packages('jiebaRD')

>install.packages('jiebaR')

> library(jiebaRD)

> library(jiebaR)

分词

> test

首先需要建立分词引擎

> seg

这里“<=”表示分词运算符

> seg<=test

[1] "革命" "尚未" "成功" "同志" "仍" "需" "努力"

与下面这句效果一样

> segment(test,seg)

[1] "革命" "尚未" "成功" "同志" "仍" "需" "努力"

也就是有两种写法:

(1)、seg<=test

(2)、segment(test,seg)

后面的类似都有两种写法。

词性标注:

可以使tag来进行分词和词性标注, 词性标注使用混合模型分词,标注采用和 ictclas 兼容的标记法。

>seg

> test

> segment(test,seg)

vn      d      a      n     zg      v     ad

"革命" "尚未" "成功" "同志"   "仍"   "需" "努力"

这里seg <= test也是一样的,后面一样有这样写法,只写一种,不再强调指出。

关键词提取:

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

> seg2

> keywords(test,seg2)

6.13553

"同志"

Simhash 与海明距离:

对中文文档计算出对应的simhash值。simhash是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。Simhash引擎先进行分词和关键词提取,后计算Simhash值和海明距离。

> test

> seg3

> simhash(test,seg3)

$simhash

[1] "13489182016966018967"

$keyword

6.13553 6.0229

"同志" "努力"

列表分词:

支持一次性对多个列表(每个元素为文本)进行分词。

test2

> apply_list(list(test,test2),seg)

[[1]]

vn      d      a      n     zg      v     ad

"革命" "尚未" "成功" "同志"   "仍"   "需" "努力"

[[2]]

ns        v        n        n       ns

"十堰"     "有"   "道家" "发源地" "武当山"

去除停止词

>seg

还有一些其它设置,比如:

show_dictpath():显示默认的词典路径,有jieba.dict.utf8(最大概率法)、hmm_model.utf8(隐式马尔科夫模型),这两个都是作为分词需要用到的词典;idf.utf8(TF-IDF算法)、stop_words.utf8(停用词词典),这两个词典是做关键词抽取之用。

edit_dict(name = "user"):默认编辑用户自定义词典,还有system(可以打开编辑jieba.dict.utf8),stop_word(停用词典)两个参数值供选择。

还有一些其它参数,具体参见help("jiebaR"),获取更多详细信息,学习利用帮助信息对于R语言的学习很重要。

其实,具体分词引擎worker()怎么设置,我们可以帮助一下:help('worker')就会有:

worker(type = "mix", dict = DICTPATH, hmm = HMMPATH, user = USERPATH,idf = IDFPATH, stop_word = STOPPATH, write = T, qmax = 20, topn = 5,encoding = "UTF-8", detect = T, symbol = F, lines = 1e+05,output = NULL, bylines = F, user_weight = "max")

这里的一些参数:

type, 引擎类型

dict, 系统词典

hmm, HMM模型路径

user, 用户词典

idf, IDF词典

stop_word, 关键词用停止词库

write, 是否将文件分词结果写入文件,默认FALSE

qmax, 最大成词的字符数,默认20个字符

topn, 关键词数,默认5个

encoding, 输入文件的编码,默认UTF-8

detect, 是否编码检查,默认TRUE

symbol, 是否保留符号,默认FALSE

lines, 每次读取文件的最大行数,用于控制读取文件的长度。大文件则会分次读取。

output, 输出路径

bylines, 按行输出

user_weight, 用户权重

欢迎留言、提建议,觉得不错,记得点赞分享哦!

猜你可能喜欢

终于等到你了!

再华丽的词藻也不过简单的分享!

爱生活、爱原创、爱分享!

点击【阅读原文】获得超值课程,降价40!

python语言入门r_小结:jieba分词的Python与R语言基础用法介绍相关推荐

  1. python3爬虫入门实例_10个python爬虫入门实例(小结)

    昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...

  2. python入门爬虫案例_10个python爬虫入门实例(小结)

    昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...

  3. R语言可以直接从数据库读取数据么?R语言读取数据库数据示例

    R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 目录 R语言可以直接从数据库读取数据么?R语言读取数据库数据示例 R语言是解决什么问题的? R语言可以直接从数据库读取数据么?R语言读取数据 ...

  4. Data Mining Machine Learning学习笔记 机器学习入门笔记 之jieba分词(中文分词)(二)

    第二章 Rationlism & Empiricism 理性主义和经验主义 Rationalism (按照人类的方式进行处理,做词法,语法,语义分析) Natural Language Pro ...

  5. Python 自然语言处理(基于jieba分词和NLTK)

    ----------欢迎加入学习交流QQ群:657341423 自然语言处理是人工智能的类别之一.自然语言处理主要有那些功能?我们以百度AI为例 从上述的例子可以看到,自然语言处理最基本的功能是词法分 ...

  6. 微软大神的python语言入门_你是如何自学 Python 的?

    [个人介绍] 本人大学专业为"高分子材料与工程",属化学方向,毫无编程经验,但在18年中由于工作需要处理大量数据,"被迫"学习了数据库和Python,虽然不能算 ...

  7. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  8. python从入门到精通视频教程百度云-python从入门到精通视频教程百度云资源

    python从入门到精通视频教程百度云资源来源 : 华清远见 2019-05-24 随着新技术的不断推进,在未来无论我们是要进入网页开发.数据分析.机器学习.人工智能还是无人车云计算等领域,Pytho ...

  9. python编程入门指南怎么样-如果想学python怎么入门?

    python入门相对容易对可以干很多事,是一门方便的工具语言. 在学习python之前,肯定都自己了解过这门语言,也知道python有很多学习方向.比如数据采集方向(爬虫),或者是Web开发方向,也可 ...

最新文章

  1. dmol3给定关键字不在字典中_python中的数据结构与算法(2):字典与集合
  2. rhel6用centos163 yum源
  3. HDU ACM 3177 Crixalis's Equipment
  4. 面试这么多人,发现越是没本事的人,自尊心越强
  5. Python 让所有奇数都在偶数前面,而且奇数升序排列,偶数降序排序
  6. 64位 regsrv win10_Win10 64位安装个人版SQL2000图文教程
  7. Longformer:超越RoBERTa,为长文档而生的预训练模型
  8. Android开发笔记(三十六)展示类控件
  9. C#里的三种定时器类型
  10. 第二篇:ssh.invoke_shell() 切换root出现的新问题
  11. MapStruct 入门使用
  12. MyBatis拦截器实现SQL打印
  13. 数字ic后端学习ing
  14. 控制工程实践(11)——控制系统辨识
  15. 判断玩家是否开全图挂
  16. 蚁群算法(ACO)最短路径规划(MATLAB)
  17. 搭建游戏平台用哪里的高防服务器比较好
  18. C# 经常忘 该记记
  19. 中心极限定理与大数定理理解
  20. 抖音小店如何上传商品?提升精选联盟排名的4大秘籍丨国仁网络

热门文章

  1. 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
  2. 2021年大数据HBase(二):HBase集群安装操作
  3. Ubuntu系统打开终端的方法
  4. .svn提交项目提示更新副本
  5. java.lang.ClasNotFoundException:Didnt findclass on path:DexPathList[[zip file
  6. HAOI2011 Problem b
  7. 用html编写一个贪吃蛇,HTML编写的贪吃蛇代码
  8. Nexus2.x安装
  9. 2022-2028年中国三氟化氮行业市场调查研究及前瞻分析报告
  10. Git 常见问题记录