本文主要介绍Python中文分词库jieba(口吃分词)提取单词、加载单词、修改词频以及定义词库的详细用法。有需要的朋友可以参考一下。
一,jieba的介绍
Jieba是目前性能较好的Python中文分词组件。它主要有以下特点:
支持四种分词模式:
精确的全模式搜索引擎模式桨模式支持繁体分词
支持自定义词典
MIT 授权协议
二,安装和使用
1,安装
pip3安装街霸
2,使用
进口洁霸
三,主要分词功能
1,jieba.cut 和jieba.lcut
Lcut将返回的对象转换为list对象并返回它。
传入参数解析:
def cut(self,sentence,cut_all=False,HMM=True,use_paddle=False):
# sentence:要分词的字符串;
# cut_all:参数用于控制是否采用全模式;
# HMM:参数用于控制是否使用HMM模型;
# use_paddle:参数用于控制是否使用paddle模式下的分词模式。Paddle模式采用延迟加载模式,paddlepaddle-tiny通过enable_paddle接口安装。
1)精准模式(默认):
尽量切句最准确,适合文本分析。
Seg_list=jieba.cut('我来了北京和清华',cut_all=False)
Print('精确模式:' '/'。join(seg_list)) #精确模式
# -输出-
准确模式:我/来/北京/清华
2)全模式:
扫描出一个句子中所有能成词的词,速度很快,但解决不了歧义;
Seg_list=jieba.cut('我来了北京和清华',cut_all=True)
打印('完整模式:' '/'。join(seg_list)) #全模式
# -输出-
全模式:本人/来/北京/清华/清华大学/华大/大学。
3)paddle模式
利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。还支持词性标注。
Paddle Paddle-tiny,pip安装paddle paddle-tiny==1.6.1,需要安装后才能使用paddle模式。
目前paddle模式支持杰霸v0.40及以上版本。
Jiba版本低于0.40,请升级jieba,pip installjieba - upgrade。PaddlePaddle官网
进口洁霸
#通过enable_paddle接口安装paddlepaddle-tiny,导入相关代码;
Jieba.enable_paddle() #第一次使用,可以自动安装导入代码。
seg_list=jieba.cut(str,use_paddle=True)
打印('桨模式:' '/'。join(list(seg_list)))
# -输出-
Paddle已成功启用.
划桨模式:我/来/北京清华
2,jieba.cut_for_search 和 jieba.lcut_for_search
搜索引擎模式
在精确模式的基础上,对长词进行再次切分,提高召回率,适用于搜索引擎切分。
Seg_list=jieba.cut_for_search('小明毕业于中科院计算所,后就读于日本京都大学')#搜索引擎模式
打印(',')。join(seg_list))
# -输出-
小明,硕士,毕业于中国宇,科学,学院,科学院,中国科学院,计算,计算,后,在,日本,京都,大学,日本京都大学,深造。
3,jieba.Tokenizer(dictionary=DEFAULT_DICT)
创建一个新的自定义断词器,可用于同时使用不同的词典。Jieba.dt是默认的分词设备,所有全局分词相关功能都是这个分词设备的映射。
进口洁霸
Test_sent='永和服饰有限公司'
result=jieba . token ize(test _ sent)# # token ize:返回单词在原文中的起始位置。
打印(结果)
对于结果中的tk:
# print ('word %s\t\t开始:%d \t\t结束:%d' % (tk[0],tk[1],tk[2]))
打印(tk)
# -输出-
生成器对象Tokenizer.tokenize位于0x7f6b68a69d58
(《永和》,0,2)
(《衣装》,2,4)
(“装饰”,4,6)
(“有限公司”,6,10)
四,添加自定义词典
开发人员可以指定他们自己的自定义词典来包含不在jieba词库中的单词。虽然解霸有识别新词的能力,但是自己添加新词可以保证更高的准确率。
1,添加词典用法:
jiba . load _ user dict(dict _ path)# dict _ path是文件类对象或自定义字典的路径。
2,其中自定义字典举例如下:
一字占一行;每行分为单词、词频(可省略)、词性(可省略)三部分,用空格隔开,顺序不能颠倒。
创新3 i
5云计算
凯特琳新西兰
中信建投
投资公司
3,使用自定义词典示例:
1)使用自定义词典文件
进口洁霸
Test_sent='中信建投公司投资了一个游戏,中信也投资了一个游戏公司'
jieba . load _ user dict(' user dict . txt ')
words=jieba.cut(test_sent)
打印(列表(单词))
# -输出-
['中信建投','投资公司','投资','乐','一','游戏',','中信','叶','投资','乐','一','游戏','公司']
2)使用 jieba 在程序中动态修改词典
进口洁霸
#定义一个例句
Test_sent='中信建投公司投资了一个游戏,中信也投资了一个游戏公司'
#添加单词
Jieba.add_word('中信建投')
Jieba.add_word('投资公司')
#删除单词
Jieba.del_word('中信建投')
words=jieba.cut(test_sent)
打印(列表(单词))
# -输出-
['中信','建投','投资公司','投资','乐','一','游戏',','中信','叶','投资','乐','一','游戏','公司']
五,关键词提取
1,基于TF-IDF算法的关键词提取
1)TF-IDF接口和示例
进口解霸
jieba.analyse.extract_tags(句子,topK=20,withWeight=False,allowPOS=())
需要注意的是:1 .句子是要提取的文本;2.topK是TF/IDF权重最大的关键词;默认值为203.withWeight是是否一起返回关键字weight默认值为false4.allowpos仅包含具有指定词性的单词;默认值为空,即街霸。分析一下。不筛选TFIDF (idf_path=none)来创建新的TFIDF。
进口洁霸
进口解霸
#读取文件,返回一个字符串,并使用utf-8编码读取它。该文档位于这个python目录中。
content=open('data.txt ',' r ',encoding='utf-8 ')。阅读()
tags=jieba . analyse . extract _ tags(content,topK=10,withWeight=True,allowPOS=('nr '))
打印(标签)
# -输出-
虚竹',0.20382572423643955),('丐帮',0.0784568982),('什么',0.288888888888866内力',0.053537558880801.8405),('大理',0.487765808,1372),('咱们',0.057 . 405407
2)关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
用法:jieba . analyze . set _ IDF _ path(file _ name)# file _ name是自定义语料库的路径。
自定义语料库示例:
劳动保护13.90067652劳动保护13.6652生物化学13.7652生物化学13.067652奥萨贝尔13.4800000854在职11。倒档。编译。编译。蝶泳。调试。48848.888888888845
3)关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
用法:jieba . analyze . set _ stop _ words(file _ name)# file _ name是自定义语料库的路径。自定义语料库示例:
进口洁霸
进口解霸
#读取文件,返回一个字符串,并使用utf-8编码读取它。该文档位于这个python目录中。
content=open(u'data.txt ',' r ',encoding='utf-8 ')。阅读()
jieba . analyse . set _ stop _ words(' stop words . txt ')
tags=jieba . analyse . extract _ tags(content,topK=10)
打印(',')。加入(标签))
4)关键词一并返回关键词权重值示例
进口洁霸
进口解霸
#读取文件,返回一个字符串,并使用utf-8编码读取它。该文档位于这个python目录中。
content=open(u'data.txt ',' r ',encoding='utf-8 ')。阅读()
jieba . analyse . set _ stop _ words(' stop words . txt ')
tags=jieba . analyse . extract _ tags(content,topK=10,withWeight=True)
打印(标签)
2,词性标注
Jieba . posseg . pos tokenizer(tokenizer=none)创建一个新的自定义断词器,tokenizer参数可以指定jieba。内部使用的分词器。Jieba.posseg.dt是默认的词性标注参与者。分词后标注每个词的词性,采用兼容ictclas的标注方式。用法示例
将jieba.posseg作为pseg导入
Words=pseg.cut(“我爱北京的天安门广场”)
对于单词,标记单词:
打印(' %s %s' % (word,flag))
# -输出-
国际关系
爱情v
北京ns
纳秒
词性对照表
3,并行分词
目标文本换行后,每一行文本分布到多个Python进程进行并行分词,然后合并结果,这样可以大幅提高分词速度。用法:
jieba.enable_parallel(4):开启并行分词模式,参数为并行进程数jieba.disable_parallel():关闭并行分词模式
可参考测试文件。巴拉圭
注意:基于大蟒自带的多重处理模块,目前暂不支持Windows操作系统操作系统
4,Tokenize:返回词语在原文的起止位置
1)默认模式
注意,输入参数只接受采用双字节对字符进行编码
进口洁霸
进口解霸
result=jieba.tokenize(u '永和服装饰品有限公司)
对于结果中的tk:
打印(' word %s\t\t开始:%d \t\t结束:% d“%(tk[0],tk[1],tk[2]))
# -输出-
单词永和开始:0结束:2
单词服装开始:2结束:4
单词饰品开始:4结束:6
单词有限公司开始:6结束:10
2)搜索模式
进口洁霸
导入jieba.analyse
result=jieba.tokenize(u '永和服装饰品有限公司,mode='search ')
对于结果中的tk:
打印(' word %s\t\t开始:%d \t\t结束:% d“%(tk[0],tk[1],tk[2]))
# -输出-
单词永和开始:0结束:2
单词服装开始:2结束:4
单词饰品开始:4结束:6
单词有限开始:6结束:8
单词公司开始:8结束:10
单词有限公司开始:6结束:10
5,搜索引擎ChineseAnalyzer for Whoosh
使用街霸和呼可以实现搜索引擎功能。
呼是由大蟒实现的一款全文搜索工具包,可以使用点安装它:
点安装嗖
介绍街霸嗖实现搜索之前,你可以先看下文呼的简单介绍。
下面看一个简单的搜索引擎的例子:
导入操作系统
导入技能
从嗖,田野导入*
从嗖.指数导入创建_in
从whoosh.qparser导入QueryParser
来自jieba.analyse进口中文分析仪
analyzer=ChineseAnalyzer()
Schema=Schema(title=TEXT(stored=True),
path=ID(stored=True),
内容=文本(存储=真,
分析器=分析器))
如果不是os.path.exists('test '):
os.mkdir('测试)
否则:
# 递归删除目录
shutil.rmtree('test ')
os.mkdir('测试)
idx=create_in('test ',schema)
writer=idx.writer()
writer.add_document(
title=u '文档1 ',
path='/tmp1 ',
特雷西麦克格雷迪是一个著名的篮球运动员,他优雅的篮球风格吸引了我)
writer.add_document(
title=u '文档2 ',
path='/tmp2 ',
科比也是一个著名的篮球运动员,他的顽强精神也吸引着我)
writer.add_document(
title=u '文档3 ',
path='/tmp3 ',
"勒布朗詹姆斯是我不喜欢的球员")
writer.commit()
searcher=idx.searcher()
parser=QueryParser('content ',schema=idx.schema)
对于关键字在(’篮球','优雅'):
打印("搜索关键字",关键字)
query=parser.parse(关键字)
打印(查询,'-')
results=searcher.search(查询)
对于命中结果:
打印(点击。高亮('内容'))
打印('='*50)
六,延迟加载
ieba采用延迟加载,进口解霸和解霸。标记器()不会立即触发词典的加载,一旦有必要才开始加载词典构建前缀字典。如果你想手工初始解霸,也可以手动初始化。
进口洁霸
jieba.initialize() #手动初始化(可选)
上面代码中,使用添加文档()把一个文档添加到了指数中。在这些文档中,搜索含有"篮球"和"优雅"的文档。
七,其他词典
1,占用内存较小的词典文件https://github。com/fxsjy/jieba/raw/master/extra _ dict/dict。txt。小的
2,支持繁体分词更好的词典文件https://github。com/fxsjy/jieba/raw/master/extra _ dict/dict。txt。大的
下载你所需要的词典,然后覆盖jieba/dict.txt即可;或者用解霸。set _ dictionary(' data/dict。txt。大’)
更多关于Python中文分词的文章请查看下面的相关链接
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。