,,Python中文分词库jieba(结巴分词)详细使用介绍

,,Python中文分词库jieba(结巴分词)详细使用介绍

本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: