赞
踩
1、结巴介绍
支持三种分词模式:
同时支持繁体分词、支持自定义词典、MIT 授权协议,这里介绍三个使用该系统的案例
2、安装和导入
pip install jieba 安装
import jieba导入
3、算法
4、库函数功能实现
1、切词功能
jieba.cut
(|--jieba.lcut
直接返回 list--|)方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型jieba.cut_for_search
(|--jieba.lcut_for_search
直接返回 list--|)方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细jieba.cut
以及 jieba.cut_for_search
返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)jieba.Tokenizer(dictionary=DEFAULT_DICT)
新建自定义分词器,可用于同时使用不同词典。jieba.dt
为默认分词器,所有全局分词相关函数都是该分词器的映射。代码示例:
- import jieba
-
-
- seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
- print("全模式: " + "/ ".join(seg_list)) # 全模式
- # 全模式: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
-
- seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
- print("精确模式: " + "/ ".join(seg_list)) # 精确模式
- # 精确模式: 我/ 来到/ 北京/ 清华大学
-
- seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
- print(" ".join(seg_list))
- # 他 来到 了 网易 杭研 大厦
-
- seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
- print(" ".join(seg_list))
- # 小明 硕士 毕业 于 中国 科学 学院 科学院 中国科学院 计算 计算所 , 后 在 日本 京都 大学 日本京都大学 深造
-
- seg_list = jieba.cut("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 精确模式
- print(" ".join(seg_list))
- # 小明 硕士 毕业 于 中国科学院 计算所 , 后 在 日本京都大学 深造
-
- seg_list = jieba.cut("小明硕士毕业于中国科学院计算所,后在日本京都大学深造", cut_all=True) # 全模式
- print(" ".join(seg_list))
- # 小 明 硕士 毕业 于 中国 中国科学院 科学 科学院 学院 计算 计算所 后 在 日本 日本京都大学 京都 京都大学 大学 深造
2、添加自定义词典
jieba允许开发者自己导入自己的字典,以下是jieba中的词性说明
Ag | 形语素 | 形容词性语素。形容词代码为 a,语素代码g前面置以A。 |
a | 形容词 | 取英语形容词 adjective的第1个字母。 |
ad | 副形词 | 直接作状语的形容词。形容词代码 a和副词代码d并在一起。 |
an | 名形词 | 具有名词功能的形容词。形容词代码 a和名词代码n并在一起。 |
b | 区别词 | 取汉字“别”的声母。 |
c | 连词 | 取英语连词 conjunction的第1个字母。 |
dg | 副语素 | 副词性语素。副词代码为 d,语素代码g前面置以D。 |
d | 副词 | 取 adverb的第2个字母,因其第1个字母已用于形容词。 |
e | 叹词 | 取英语叹词 exclamation的第1个字母。 |
f | 方位词 | 取汉字“方” |
g | 语素 | 绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母 |
h | 前接成分 | 取英语 head的第1个字母。 |
i | 成语 | 取英语成语 idiom的第1个字母。 |
j | 简称略语 | 取汉字“简”的声母。 |
k | 后接成分 | |
l | 习用语 | 习用语尚未成为成语,有点“临时性”,取“临”的声母。 |
m | 数词 | 取英语 numeral的第3个字母,n,u已有他用 |
Ng | 名语素 | 名词性语素。名词代码为 n,语素代码g前面置以N。 |
n | 名词 | 取英语名词 noun的第1个字母。 |
nr | 人名 | 名词代码 n和“人(ren)”的声母并在一起。 |
ns | 地名 | 名词代码 n和处所词代码s并在一起。 |
nt | 机构团体 | “团”的声母为 t,名词代码n和t并在一起。 |
nz | 其他专名 | “专”的声母的第 1个字母为z,名词代码n和z并在一起。 |
o | 拟声词 | 取英语拟声词 onomatopoeia的第1个字母。 |
p | 介词 | 取英语介词 prepositional的第1个字母。 |
q | 量词 | 取英语 quantity的第1个字母。 |
r | 代词 | 取英语代词 pronoun的第2个字母,因p已用于介词。 |
s | 处所词 | 取英语 space的第1个字母。 |
tg | 时语素 | 时间词性语素。时间词代码为 t,在语素的代码g前面置以T。 |
t | 时间词 | 取英语 time的第1个字母。 |
u | 助词 | 取英语助词 auxiliary |
vg | 动语素 | 动词性语素。动词代码为 v。在语素的代码g前面置以V。 |
v | 动词 | 取英语动词 verb的第一个字母。 |
vd | 副动词 | 直接作状语的动词。动词和副词的代码并在一起。 |
vn | 名动词 | 指具有名词功能的动词。动词和名词的代码并在一起。 |
w | 标点符号 | |
x | 非语素字 | 非语素字只是一个符号,字母 x通常用于代表未知数、符号。 |
y | 语气词 | 取汉字“语”的声母。 |
z | 状态词 | 取汉字“状”的声母的前一个字母。 |
jieba.dt
)的 tmp_dir
和 cache_file
属性,可分别指定缓存文件所在的文件夹及其文件名,用于受限的文件系统。add_word(word, freq=None, tag=None)
和 del_word(word)
可在程序中动态修改词典。suggest_freq(segment, tune=True)
可调节单个词语的词频,使其能(或不能)被分出来。
- jieba.load_userdict("./userdict.txt")
-
- jieba.add_word('石墨烯')
- jieba.add_word('凱特琳')
- jieba.del_word('自定义词')
-
- test_sent = (
- "李小福是创新办主任也是云计算方面的专家; 什么是八一双鹿\n"
- "例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类\n"
- "「台中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"
- )
- words = jieba.cut(test_sent)
- print('/'.join(words))
-
- # 3、动态修改字典
-
- print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False))) # 如果/放到/post/中将/出错/。
-
- jieba.suggest_freq(('中', '将'), True)
- print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False))) # 如果/放到/post/中/将/出错/。
-
- print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False))) # 「/台中/」/正确/应该/不会/被/切开
-
- jieba.suggest_freq('台中', True)
- print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False))) # 「/台中/」/正确/应该/不会/被/切开
3、基于tf_idf的关键词抽取
这里不解释tf_idf原理,自己看找我的博客,以下是tf_idf的API,但是还是建议自己实现和完成
逆文档频率语料库加载加载
停用词语料库加载
- with open('./news.txt', 'r', encoding='utf8') as f:
- # 停用词加载
- jieba.analyse.set_stop_words("E:/python3.6/Lib/site-packages/jieba/停用词表.txt")
- # 加载逆文档频率
- jieba.analyse.set_idf_path("E:/python3.6/Lib/site-packages/jieba/词语的idf值.txt");
- text_gen = f.readlines()
- for i in text_gen:
- # print(list(jieba.cut(i)))
- tags = jieba.analyse.extract_tags(i, topK=5, withWeight=True)
- print([i for i in tags])
- """ 1、没有加停用词和逆文档频率文件
- [('国奥队', 0.3637303418553846), ('训练', 0.33246663343), ('沈阳', 0.228898753096), ('冯萧霆', 0.18391950004461538), ('大雨', 0.16098554931653847)]
- [('瑞典队', 0.30074073179658445), ('瑞典', 0.2956988517856736), ('商瑞华', 0.2722148198003795), ('美国队', 0.18997166285996203), ('首战', 0.12821579114686907)]
- [('夏煊泽', 0.31305446816104743), ('黄旭', 0.22750699921440265), ('高尔夫', 0.11777941569283142), ('冠军', 0.11246872005427169), ('张军', 0.10991123519705401)]
- [('辽足', 0.5465036572754285), ('俱乐部', 0.23442552764586666), ('球员', 0.21276443697030475), ('冲超', 0.18216788575847617), ('合同', 0.148020934632)]
- [('谢亚龙', 0.6090852230286218), ('带走', 0.24736276884148412), ('总局', 0.2424782381014841), ('立案侦查', 0.22406656837738514), ('警方', 0.18045108875339222)]
- [('北京队', 0.5009253207927928), ('比赛', 0.34885009806738737), ('鹿队', 0.3231018244027027), ('一双', 0.2041001068765766), ('阿的江', 0.17950101355705705)]
- [('姚明', 0.42573157703137254), ('罗萨斯', 0.3090519244522876), ('我们', 0.14407559990480392), ('球队', 0.11284731363281046), ('防守', 0.10211284675202614)]
- [('姚明', 0.3431543314864942), ('胜利', 0.1764550853764368), ('球队', 0.17364866796083334), ('队友', 0.1715419643687931), ('麦蒂', 0.14708500008333336)]
- [('活塞', 0.23378773478520407), ('火箭', 0.23030406687882654), ('姚明', 0.18001277778813776), ('交易', 0.11903735440535715), ('普林斯', 0.0957733415119898)]
- [('湖人', 0.5715426694613546), ('布雷克', 0.5484391083661354), ('布朗', 0.36476601849179285), ('比赛', 0.24502079772860558), ('后卫', 0.16158529938326693)]
- [('希伯杜', 0.3516108089088235), ('防守', 0.2660308375908049), ('公牛', 0.1549358723513932), ('对手', 0.11124624027972137), ('命中率', 0.10681638496746129)]
- [('希伯特', 0.4612772026842443), ('步行者', 0.21414485532106112), ('奥布莱恩', 0.178786850829582), ('中锋', 0.15399233123151126), ('姚明', 0.12217538022524115)]
- 2、添加停用词和逆文档频率
- [('沈阳', 0.5226127870120219), ('国奥队', 0.5226127870120219), ('训练', 0.4723569655289617), ('球员', 0.2613063935060109), ('冯萧霆', 0.2613063935060109)]
- [('瑞典队', 0.4053462037258312), ('瑞典', 0.39855062631982097), ('商瑞华', 0.36689823538312016), ('美国队', 0.2560487629851662), ('战术', 0.21402397064015344)]
- [('夏煊泽', 0.36226568190606057), ('黄旭', 0.2632704100757576), ('冠军', 0.20377444607215905), ('高尔夫', 0.18113284095303028), ('活动', 0.1584912358339015)]
- [('辽足', 0.7882264287626373), ('俱乐部', 0.5254842858417582), ('球员', 0.42695598224642856), ('合同', 0.39411321438131863), ('工资', 0.295584910785989)]
- [('谢亚龙', 0.9452606862758139), ('总局', 0.44482855824744183), ('警方', 0.3892249884665116), ('带走', 0.3255984352657675), ('立案侦查', 0.29493413418976744)]
- [('比赛', 0.9154551691409909), ('北京队', 0.6462036488054054), ('一双', 0.5385030406711712), ('鹿队', 0.484652736604054), ('阿的江', 0.2692515203355856)]
- [('姚明', 0.74717296893125), ('罗萨斯', 0.4925515045958333), ('表现', 0.31132207038802084), ('火箭', 0.24905765631041665), ('球队', 0.24905765631041665)]
- [('姚明', 0.6202945402448113), ('胜利', 0.563904127495283), ('球队', 0.39473288924669814), ('队友', 0.3383424764971698), ('麦蒂', 0.2819520637476415)]
- [('火箭', 0.5197725001260869), ('活塞', 0.41581800010086956), ('交易', 0.3950271000958261), ('姚明', 0.2702817000655652), ('合同', 0.20790900005043478)]
- [('湖人', 0.74717296893125), ('布朗', 0.74717296893125), ('布雷克', 0.7169698760411458), ('比赛', 0.5603797266984375), ('球队', 0.24905765631041665)]
- [('防守', 0.6046089311811493), ('希伯杜', 0.5221622587473562), ('公牛', 0.274822241445977), ('对手', 0.274822241445977), ('说话', 0.24734001730137928)]
- [('希伯特', 0.5977383751450001), ('步行者', 0.27396342194145834), ('奥布莱恩', 0.23167796086666667), ('中锋', 0.224151890679375), ('球队', 0.19924612504833333)]
- """
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。