图片与代码均源自up主和官方文档
https://www.bilibili.com/video/BV1xy4y187iC
jieba官方文档
需要python3.7的版本
常用API接口:
jieba.cut 以及 jieba.cut_for_search :返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),用这个还api还要加for循环。
jieba.lcut 以及 jieba.lcut_for_search :直接返回 list,用这个api直接可以打印出结果,建议使用这个。
1和2对比:
import jieba
str = '我来到北京清华大学'
print(str)
print('jieba.cut(str):', jieba.cut(str))
print('list(jieba.cut(str)):', list(jieba.cut(str)))
print('jieba.lcut(str):', jieba.lcut(str))
输出:
我来到北京清华大学
jieba.cut(str): <generator object Tokenizer.cut at 0x00000198409560C8>
list(jieba.cut(str)): ['我', '来到', '北京', '清华大学']
jieba.lcut(str): ['我', '来到', '北京', '清华大学']
四种分词模式对比:
import jieba
jieba.enable_paddle() # 引入paddle包,开启paddle模式
str = '我来到北京清华大学'
print(str)
print('精确模式:', jieba.lcut(str))
print('全模式:', jieba.lcut(str, cut_all=True))
print('搜索引擎模式:', jieba.lcut_for_search(str))
print('paddle模式:', jieba.lcut(str, use_paddle=True))
输出:
我来到北京清华大学
精确模式: ['我', '来到', '北京', '清华大学']
全模式: ['我', '来到', '北京', '清华', '清华大学', '华大', '大学']
搜索引擎模式: ['我', '来到', '北京', '清华', '华大', '大学', '清华大学']
paddle模式: ['我', '来到', '北京清华大学']
jieba.lcut()函数默认带有HMM用于发现新词。
import jieba
str = '他来到了网易杭研大厦'
print(str)
print('精确模式,默认开启HMM:', jieba.lcut(str))
print('精确模式:', jieba.lcut(str, HMM=False))
输出:
他来到了网易杭研大厦
精确模式,默认开启HMM: ['他', '来到', '了', '网易', '杭研', '大厦']
精确模式,关闭HMM: ['他', '来到', '了', '网易', '杭', '研', '大厦']
import jieba
import jieba.posseg as pseg
jieba.enable_paddle() # 引入paddle包,开启paddle模式
str = '我来到北京清华大学'
print(str)
print('默认模式:', pseg.lcut(str))
print('paddle模式:', pseg.lcut(str, use_paddle=True))
输出:
我来到北京清华大学
默认模式: [pair('我', 'r'), pair('来到', 'v'), pair('北京', 'ns'), pair('清华大学', 'nt')]
paddle模式: [pair('我', 'r'), pair('来到', 'v'), pair('北京清华大学', 'ORG')]
import jieba.analyse
str = '我来到北京清华大学'
print(str)
print('TF-IDF:', jieba.analyse.extract_tags(str))
print('TextRank:', jieba.analyse.textrank(str))
输出:
我来到北京清华大学
TF-IDF: ['清华大学', '来到', '北京']
TextRank: ['来到', '北京']
topK
import jieba.analyse
str = '此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。'
print(str)
# topK
print('默认topK=20:', jieba.analyse.extract_tags(str))
print('topK=10:', jieba.analyse.extract_tags(str, topK=10))
输出:
此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。
默认topK=20: ['欧亚', '吉林', '置业', '万元', '增资', '4.3', '7000', '2013', '139.13', '实现', '综合体', '经营范围', '亿元', '在建', '全资', '注册资本', '百货', '零售', '子公司', '营业']
topK=10: ['欧亚', '吉林', '置业', '万元', '增资', '4.3', '7000', '2013', '139.13', '实现']
withWeight
import jieba.analyse
str = '我来到北京清华大学'
print(str)
# withWeight
print('默认withWeight=False:', jieba.analyse.extract_tags(str))
print('withWeight=True:', jieba.analyse.extract_tags(str, withWeight=True))
输出:
我来到北京清华大学
默认withWeight=False: ['清华大学', '来到', '北京']
withWeight=True: [('清华大学', 2.6935315738733334), ('来到', 1.79522896137), ('北京', 1.5558007695733334)]
allowPOS
import jieba.analyse
str = '我来到北京清华大学'
print(str)
# allowPOS
print('默认显示全部词性:', jieba.analyse.extract_tags(str))
print('只显示\'v\'词性:', jieba.analyse.extract_tags(str, allowPOS=('v')))
输出:
我来到北京清华大学
默认显示全部词性: ['清华大学', '来到', '北京']
只显示'v'词性: ['来到']
意义:开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。
用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径。
构造字典:词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
字典示例:
创新办 3 i
云计算 5
凱特琳 nz
台中