python3 jieba分词

一.jieba库用于分词,https://github.com/fxsjy/jieba

 

二.分词:分词精细:全局(文本分析)<精确(快速成词)<搜素(搜素引擎分词)

 1 #分词
 2 str=r'今天我们中出了一个叛徒,不想领导领导的领导不是好领导'
 3 a=jieba.cut(str,cut_all=True,HMM=False)
 4 #分词(字符串,是否采用全局模式(默认False精确模式),是否使用HMM模式(默认True))
 5 print(a)#返回可迭代的生成器
 6 print(','.join(a))
 7 
 8 b=jieba.lcut(str)#lcut_for_search直接返回列表
 9 print(b)
10 
11 print(jieba.lcut_for_search(str, HMM=True))#搜索模式
12 ---------------------------------------------------------
13 Building prefix dict from the default dictionary ...
14 <generator object Tokenizer.cut at 0x0368E8A0>
15 Loading model from cache C:\Users\11373\AppData\Local\Temp\jieba.cache
16 今天,我们,中出,了,一个,叛徒,,,不想,领导,领导,的,领导,不是,好,领导
17 Loading model cost 0.784 seconds.
18 ['今天', '我们', '中出', '', '一个', '叛徒', '', '不想', '领导', '领导', '', '领导', '不是', '', '领导']
19 Prefix dict has been built succesfully.
20 ['今天', '我们', '中出', '', '一个', '叛徒', '', '不想', '领导', '领导', '', '领导', '不是', '', '领导']
分词

 

三.导入用户字典

1 #导入用户的字典
2 #词典格式:一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
3 #file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码
4 jieba.load_userdict('dict.txt')
5 print(jieba.lcut(str))
6 --------------------------------------------------------
7 ['今天', '我们', '中出了', '一个', '叛徒', '', '不想', '领导领导', '', '领导', '不是', '', '领导']
导入用户字典
中出了
领导领导
dict.txt

 

四.实时操作字典

 1 jieba.add_word('一个叛徒')#实时在字典中添加某个词
 2 print(jieba.lcut(str))
 3 jieba.del_word('领导')#删除字典的某个词
 4 print(jieba.lcut(str))
 5 jieba.suggest_freq(('一个','叛徒'),True)#可调节单个词语的词频,使其能(或不能)被分出来
 6 print(jieba.lcut(str))
 7 jieba.suggest_freq(('',''),True)
 8 print(jieba.lcut(str))#自动计算的词频在使用 HMM 新词发现功能时可能无效。
 9 print(jieba.lcut(str,HMM=False))#自动计算的词频在使用 HMM 新词发现功能时可能无效。
10 ----------------------------------------------------------------------
11 ['今天', '我们', '中出', '', '一个叛徒', '', '不想', '领导', '领导', '', '领导', '不是', '', '领导']
12 Loading model cost 0.751 seconds.
13 Prefix dict has been built succesfully.
14 ['今天', '我们', '中出', '', '一个叛徒', '', '不想', '', '', '', '', '', '', '', '不是', '', '', '']
15 ['今天', '我们', '中出', '', '一个', '叛徒', '', '不想', '', '', '', '', '', '', '', '不是', '', '', '']
16 ['今天', '我们', '中出', '', '一个', '叛徒', '', '不想', '', '', '', '', '', '', '', '不是', '', '', '']
17 ['今天', '我们', '', '', '', '一个', '叛徒', '', '不想', '', '', '', '', '', '', '', '不是', '', '', '']
操作字典

 

五.关键字提取

 1 import jieba.analyse
 2 
 3 str='今天我们中出了一个叛徒,不想领导领导的领导不是好领导'
 4 
 5 #关键字提取
 6 a=jieba.analyse.extract_tags(str, topK=20, withWeight=False, allowPOS=())
 7 # (文本,为返回几个 TF/IDF 权重最大的关键词,默认值为 20,
 8 # 为是否一并返回关键词权重值,默认值为 False,仅包括指定词性的词,默认值为空,即不筛选)
 9 print(a)
10 
11 #基于 TextRank 算法的关键词抽取
12 # 1.将待抽取关键词的文本进行分词
13 # 2.以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
14 # 3.计算图中节点的PageRank,注意是无向带权图
15 b=jieba.analyse.textrank(str, topK=20, withWeight=True, allowPOS=('n','nr','ns'))
16 print(b)
17 -------------------------------------------------------------------------
18 ['领导', '中出', '叛徒', '不想', '今天', '不是', '我们', '一个']
19 [('领导', 1.0), ('叛徒', 0.2510095552068219)]
关键字提取

 

六.其他

 1 import jieba.posseg as pseg
 2 import jieba
 3 str='今天我们中出了一个叛徒,不想领导领导的领导不是好领导'
 4 print(pseg.lcut(str))#词性标注
 5 
 6 #并行分词,不支持windows
 7 # jieba.enable_parallel(2)# 开启并行分词模式,参数为并发执行的进程数
 8 # jieba.disable_parallel()# 关闭并行分词模式
 9 
10 #Tokenize:返回词语在原文的起止位置
11 result = jieba.tokenize(str,mode='search')#输入参数只接受 unicode
12 for i in result:
13     print(i)
14 ---------------------------------------------------------------------
15 [pair('今天', 't'), pair('我们', 'r'), pair('', 'f'), pair('', 'v'), pair('', 'ul'), pair('一个', 'm'), pair('叛徒', 'n'), pair('', 'x'), pair('不想', 'v'), pair('领导', 'n'), pair('领导', 'n'), pair('', 'uj'), pair('领导', 'n'), pair('不是', 'c'), pair('', 'a'), pair('领导', 'n')]
16 ('今天', 0, 2)
17 ('我们', 2, 4)
18 ('中出', 4, 6)
19 ('', 6, 7)
20 ('一个', 7, 9)
21 ('叛徒', 9, 11)
22 ('', 11, 12)
23 ('不想', 12, 14)
24 ('领导', 14, 16)
25 ('领导', 16, 18)
26 ('', 18, 19)
27 ('领导', 19, 21)
28 ('不是', 21, 23)
29 ('', 23, 24)
30 ('领导', 24, 26)
其他

 

posted on 2018-06-20 12:38  温润有方  阅读(1299)  评论(0编辑  收藏  举报