jieba中文处理

1.基本分词函数的用法

jieba.cut接收分词的三种输入参数:
1)需要分词的字符串
2)cut_all参数用来控制是否采用全模式,即从前往后切分,所有在词典中出现的词都会被切分出来;
精确模式:按最合理的方式进行切分;
3)HMM参数用来控制是否使用HMM模型
jieba.cut_for_search
1)需要分词的字符串
2)是否使用HMM模型
该方法适合用于搜索引擎创建倒排索引的分词,粒度比较细

#encoding=utf-8
import jiebaseg_list = jieba.cut("我在学习自然语言处理", cut_all=True)
print (seg_list)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式seg_list = jieba.cut("我在学习自然语言处理", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式seg_list = jieba.cut("他毕业于上海交通大学,在百度深度学习研究院进行研究")  # 默认是精确模式
print(", ".join(seg_list))seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在哈佛大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

运行结果:
Full Mode: 我/ 在/ 学习/ 自然/ 自然语言/ 语言/ 处理
Default Mode: 我/ 在/ 学习/ 自然语言/ 处理
他, 毕业, 于, 上海交通大学, ,, 在, 百度, 深度, 学习, 研究院, 进行, 研究
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 哈佛, 大学, 哈佛大学, 深造

jieba.lcut以及jieba.lcut_for_search直接返回list

#encoding=utf-8
import jiebaresult_lcut=jieba.lcut("小明硕士毕业于中国科学院计算机所,后在哈佛大学深造")
print (result_lcut)
result_lcut_for_search=jieba.lcut_for_search("小明硕士毕业于中国科学计算所,后在哈佛大学深造")
print (result_lcut_for_search)

运行结果:
[‘小明’, ‘硕士’, ‘毕业’, ‘于’, ‘中国科学院’, ‘计算机所’, ‘,’, ‘后’, ‘在’, ‘哈佛大学’, ‘深造’]
[‘小明’, ‘硕士’, ‘毕业’, ‘于’, ‘中国’, ‘科学’, ‘计算’, ‘科学计算’, ‘所’, ‘,’, ‘后’, ‘在’, ‘哈佛’, ‘大学’, ‘哈佛大学’, ‘深造’]

添加用户自定义词典:
针对自己的场景进行分词,一些领域内的专有词汇
1)用jieba.load_userdict(file_name)加载用户字典
2)少量的词汇可以手动添加:
用add_word(word,freq=None,tag=None)和del_word(word)在程序中动态修改词典
用suggest_freq(segment,tune=Ture)可调节单个词语的词典,使其能(或不能被分出来)

**

2.关键词提取

基于TF-IDF算法的关键词抽取

import jieba.analyse
jieba.analyse.extract_tags(sentence,topK=20,withWeight=Flase,allowPOS=())
1)sentence 为待取提取文本
2)topK为返回几个TF/DF权重最大的关键词,默认值为20
3)withWeight为是否一并返回关键词权重值,默认值为Flase
allowPOS仅包括制定词的词,默认值为空,即不筛选

#encoding=utf-8
import jieba.analyse as analyse
line=open('NBA.txt',encoding='UTF-8').read()seg_line=analyse.extract_tags(line, topK=20, withWeight=False, allowPOS=())
print(",".join(seg_line))

结果:
韦少,杜兰特,全明星,全明星赛,MVP,威少,正赛,科尔,投篮,勇士,球员,斯布鲁克,更衣柜,NBA,三连庄,张卫平,西部,指导,雷霆,明星队

词性列表
1. 名词 (1个一类,7个二类,5个三类)
n 名词
nr 人名
nr1 汉语姓氏
nr2 汉语名字
nrj 日语人名
nrf 音译人名
ns 地名
nsf 音译地名
nt 机构团体名
nz 其它专名
nl 名词性惯用语
ng 名词性语素

2. 时间词(1个一类,1个二类)
t 时间词
tg 时间词性语素

3. 处所词(1个一类)
s 处所词 (家中、门外、境内、西方……)

4. 方位词(1个一类)
f 方位词

5. 动词(1个一类,9个二类)
v 动词
vd 副动词
vn 名动词
vshi 动词“是”
vyou 动词“有”
vf 趋向动词
vx 形式动词
vi 不及物动词(内动词)
vl 动词性惯用语
vg 动词性语素

6. 形容词(1个一类,4个二类)
a 形容词
ad 副形词
an 名形词
ag 形容词性语素
al 形容词性惯用语

7. 区别词(1个一类,2个二类)
b 区别词 (主要、整个、所有……)
bl 区别词性惯用语

8. 状态词(1个一类)
z 状态词

9. 代词(1个一类,4个二类,6个三类)
r 代词
rr 人称代词
rz 指示代词
rzt 时间指示代词
rzs 处所指示代词
rzv 谓词性指示代词
ry 疑问代词
ryt 时间疑问代词
rys 处所疑问代词
ryv 谓词性疑问代词
rg 代词性语素

10. 数词(1个一类,1个二类)
m 数词
mq 数量词

11. 量词(1个一类,2个二类)
q 量词
qv 动量词
qt 时量词

12. 副词(1个一类)
d 副词

13. 介词(1个一类,2个二类)
p 介词
pba 介词“把”
pbei 介词“被”

14. 连词(1个一类,1个二类)
c 连词
cc 并列连词

15. 助词(1个一类,15个二类)
u 助词
uzhe 着
ule 了 喽
uguo 过
ude1 的 底
ude2 地
ude3 得
usuo 所
udeng 等 等等 云云
uyy 一样 一般 似的 般
udh 的话
uls 来讲 来说 而言 说来
uzhi 之
ulian 连 (“连小学生都会”)

16. 叹词(1个一类)
e 叹词

17. 语气词(1个一类)
y 语气词(delete yg)

18. 拟声词(1个一类)
o 拟声词

19. 前缀(1个一类)
h 前缀

20. 后缀(1个一类)
k 后缀

21. 字符串(1个一类,2个二类)
x 字符串
xx 非语素字
xu 网址URL

22. 标点符号(1个一类,16个二类)
w 标点符号
wkz 左括号,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wyz 左引号,全角:“ ‘ 『
wyy 右引号,全角:” ’ 』
wj 句号,全角:。
ww 问号,全角:? 半角:?
wt 叹号,全角:! 半角:!
wd 逗号,全角:, 半角:,
wf 分号,全角:; 半角: ;
wn 顿号,全角:、
wm 冒号,全角:: 半角: :
ws 省略号,全角:…… …
wp 破折号,全角:—— -- ——- 半角:— —-
wb 百分号千分号,全角:% ‰ 半角:%
wh 单位符号,全角:¥ $ £ ° ℃ 半角:$

关于TF-IDF算法的关键词抽取补充
1)关键词提取所使用逆向文件频率(IDF)文本语料库可以换成自定义语料库的路径
用法:jieba.analyse.set_idf_path(file_name)#file_name为自定义语料库的路径
2)关键词提取所使用停用词文本语料库可以切换成自定义语料库的路径
用法:jieba.analyse.set_stop_word(file_name)#file_name为自定义语料库的路径

基于TextRank算法的关键词抽取
jieba.analyse.textrank(sentence,topK=20,withWeight=Flase,allowPOS=(‘ns”,’n’,’vn’,’v’))
基本思想:
将待抽取关键词的文本进行分词
以固定窗口(默认5,通过span属性调整),词之间的共现关系

**

#encode=utf-8
import jieba.analyse as analyse
line=open('NBA.txt',encoding='UTF-8').read()
seg_line=analyse.textrank(line,topK=20,withWeight=False,allowPOS=('ns','n','vn','v'))
print(",".join(seg_line))
print("--------------分割线-----------")
seg_line1=analyse.textrank(line,topK=20,withWeight=False,allowPOS=('ns','n'))
print(",".join(seg_line1))

结果:
全明星赛,勇士,正赛,指导,对方,投篮,球员,没有,出现,时间,威少,认为,看来,结果,相隔,助攻,现场,三连庄,介绍,嘉宾
————–分割线———–
勇士,正赛,全明星赛,指导,投篮,玩命,时间,对方,现场,结果,球员,嘉宾,时候,全队,主持人,照片,全程,目标,快船队,肥皂剧

3.词性标注

jieba.posseg.POSTokenizer(tokenizer=None)新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer分词器。jieba.Tokenizer分词器。jieba.posseg.dt为默认词性标注分词器。
标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法

Tokenize:

#encode=utf-8
import jieba
print("这是默认模式的tokenize")
result=jieba.tokenize(u'自然语言处理非常有用')
for tk in result:print("%s\t\t start:%d\t\t end:%d" %(tk[0],tk[1],tk[2]))
print("----------------------")
print("这是搜索模式的tokenize")
result=jieba.tokenize(u'自然语言处理非常好用',mode='search')
for tk in result:print("%s\t\t start:%d\t\t end:%d"%(tk[0],tk[1],tk[2]))

结果
这是默认模式的tokenize
自然语言 start:0 end:4
处理 start:4 end:6
非常 start:6 end:8
有用 start:8 end:10

这是搜索模式的tokenize
自然 start:0 end:2
语言 start:2 end:4
自然语言 start:0 end:4
处理 start:4 end:6
非常 start:6 end:8

4.添加自定义词典

**
载入词典
1)开发者可以指定自己自定义的词典,以便包含结巴词库里没有的词,虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率;
2)用法:jieba.load_userdict(file_name)#file_name 为文件类对象或自定义词典的路径;
3)词典格式和dict.txt一样,一词占一行,每一行分三个部分:词语、词频、词性,用空格隔开,顺序不可颠倒file_name若为路径或者二进制方式打开大文件,则文件必须为UTF-8编码;
4)词频省略时使用自动计算能够保证分出该词的词频;

调整词典
1)使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典;
2)使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来;
自动计算的词频在使用HMM新词发现功能可能无效;

#encode=utf-8
import jieba
print('/'.join(jieba.cut('如果发到旧字典中将出错。',HMM=False)))

结果:
如果/发到/旧/字典/中将/出错/

#encode=utf-8
import jieba
print('/'.join(jieba.cut('如果发到旧字典中将出错。',HMM=False)))
jieba.suggest_freq(('中','将'),True)
print('/'.join(jieba.cut('如果发到旧字典中将出错。',HMM=False)))

结果:
如果/发到/旧/字典/中将/出错/。
如果/发到/旧/字典/中/将/出错/。

自然语言处理-jieba相关推荐

  1. 中文自然语言处理——jieba中文分词器

    jieba分词器 1.引入jieba库和语料 import jieba content = '深度学习是机器学习的一个子集,传统机器学习中,人们需要对专业问题理解非常透彻,才能手工设计特征,然后把特征 ...

  2. python编程玩具有哪些_python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)...

    先下载github代码,下面的操作,都是基于这个版本来的! 注意:由于涉及到版权问题,此附件没有图片和音乐.请参考链接,手动采集一下! 请参考链接: 一.玩具与玩具之间的对话 app消息提醒 之前实现 ...

  3. python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)...

    python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk) 先下载github代码,下面的操作,都是基于这个版本来的! ...

  4. 挑战杯课外学术参赛作品—AI合约问卷调查系统

    大学生课外学术科技作品竞赛 1.作品概述 1.1作品选题背景和意义 随着互联网技术的发展以及大数据.人工智能等新科技时代的来临,我国高校教育改革.高校人才培养也面临着新的机遇与挑战.一方面,为了实现国 ...

  5. Python基础知识(八):模块化、标准库、第三方库

    一.模块化编程理念_什么是模块_哲学思想 1.模块和包概念的进化史 Python 程序由模块组成.一个模块对应python 源文件,一般后缀名是:.py. 模块由语句组成.运行Python 程序时,按 ...

  6. 爬取京东华为mate30Pro5G的评论数据并制作云词

    爬取京东评论数据采用selenium库 爬取代码如下: # -*- coding: utf-8 -*-from selenium import webdriver import json import ...

  7. 自然语言处理课程(二):Jieba分词的原理及实例操作

    上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论.接下来,我们将要了解一些具体的.可操作的技术方法. 作为小说爱好者的你,是否有设想过通过一些计算机工具 ...

  8. jieba分词_自然语言NLP必备(1),jieba工具 5 行代码对整篇文章分词

    自然语言是什么?下面来看看百度百科的介绍: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学.计 ...

  9. 中文自然语言处理(NLP)(三)运用python jieba模块计算知识点当中关键词的词频

    前两次链接:中文自然语言处理(NLP)(一)python jieba模块的初步使用       中文自然语言处理(NLP)(二)python jieba模块的进一步学习和xlrd模块 续上次的随笔之后 ...

最新文章

  1. 如何将低压精密运算放大器的性能扩展到高压高侧电流检测应用(高电流电阻采集电压电路图及误差分析)
  2. JavaScript之event事件
  3. [深度学习-实战]LSTM Attention训练IMDB文本的情感分析
  4. JS生成数字下拉列表
  5. 你会为了好工作和优质配偶整容吗?
  6. Linux下bash:command not found提示
  7. android实例教程_改造Android示例教程
  8. ElasticSearch解决中文搜索只能搜索单个字符的问题
  9. 设计模式之GOF23责任链模式
  10. 在oracle 12c上如何禁用haip,以及打开haip,以及对haip的理解
  11. Jmeter教程(图文版)
  12. java 文字生成图片(图片添加文字)
  13. 怎样采集百家论坛MP3讲座
  14. 傻瓜教学——什么是常量?常量可以分几类?它们分别又是什么?又有什么含义?
  15. 几种常用的传播木马的方法
  16. 微信ios上下拉网页禁止
  17. TOM带你玩充电 篇三:15款5号电池横评及选购建议——南孚金霸王小米宜家耐时品胜一个都逃不了...
  18. Java初学者都必须理解的六大问题
  19. Android 10 设置壁纸流程
  20. Vue的三种路由模式

热门文章

  1. LeetCode 413.等差数列的划分
  2. 笔记本电脑的电池损耗度——命令符查看
  3. 二极管IN4148和IN4007的应用区别
  4. ERROR security.UserGroupInformation: Priviledge...
  5. python 百度云不限速_百度云不限速插件内置十几种网盘搜索!
  6. 2017中兴算法挑战赛(迪杰斯特拉)
  7. win10提示“你的设备已过期”的的最佳解决策略和方法
  8. 简述线性和非线性电路及其区别
  9. 【Android -- Material Design】CollapsingToolbarLayout 的基本使用
  10. 《Steam平台上的VR虚拟现实》(Yanlz+Unity+XR+VR+AR+MR+Steam+SteamVR+Vive+Oculus+Valve+立钻哥哥+==)