安装jieba:pip install jieba

原理:

基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)

采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合

对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

分词:

jieba支持三种分词模式:

精确模式:试图将句子最精确地切开,适合文本分析

全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义

搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

示例:

#!/usr/bin/python#-*- coding: UTF-8 -*-

importjieba

strt= "我爱北京天安门!"

#全模式

sl = jieba.cut(strt, cut_all=True)print("全模式:", ",".join(sl))#精确模式,默认为精确模式,所以可以不指定cut_all=False

sl = jieba.cut(strt, cut_all=False)print("精确模式:", ",".join(sl))#搜索引擎模式

sl =jieba.cut_for_search(strt)print("搜索引擎模式:", ",".join(sl))

关键词抽取算法主要有以下两种:

有监督学习算法:将关键词抽取过程视为二分类问题,先抽出候选词,然后对于每个候选词划定标签,其要么是关键词,要么不是关键词。然后训练关键词抽取分类器,当对一段新的文本进行抽取关键词时,先抽取出所有的候选词,然后利用训练好的关键词抽取分类器,对各个候选词进行分类,最终将标签为关键词的候选词作为关键词。

无监督学习算法:先抽取出候选词,然后对各个候选词进行打分,然后输出topN个分值最高的候选词作为关键词。根据打分的策略不同,有不同的算法,例如TF-IDF,TextRank等算法。

jieba分词实现了基于TF-IDF关键词抽取算法和基于TextRank关键词抽取算法,两类算法均是无监督学习的算法。以下对这两种算法进行介绍:

1.基于TF-IDF算法进行关键词提取

如果某个词在一篇文档中出现的频率高,也即TF(词频)高;并且在语料库中其他文档中很少出现,即DF的低,也即IDF高,则认为这个词具有很好的类别区分能力。TF-IDF算法中,将TF与IDF相乘。

代码示例:

#!/usr/bin/python#-*- coding: UTF-8 -*-

importjiebaimportjieba.analyse#jieba.analyse.extract_tags(sentence,topK) 有两个参数,第一个为要提取的文本,第二个为要获取的按TF-IDF排序的词的个数

sentence = "有监督学习算法将关键词抽取过程视为二分类问题,先抽出候选词,然后对于每个候选词划定标签,其要么是关键词,要么不是关键词。然后训练关键词抽取分类器,"\"当对一段新的文本进行抽取关键词时,先抽取出所有的候选词,然后利用训练好的关键词抽取分类器,对各个候选词进行分类,最终将标签为关键词的候选词作为关键词。"topK= 5result=jieba.analyse.extract_tags(sentence,topK)print(result)

运行结果:

2.基于TextRank算法进行关键词提取

代码示例:

#!/usr/bin/python#-*- coding: UTF-8 -*-

importjiebafrom jieba importanalyse

textrank=analyse.textrank

sentence= "有监督学习算法将关键词抽取过程视为二分类问题,先抽出候选词,然后对于每个候选词划定标签,其要么是关键词,要么不是关键词。然后训练关键词抽取分类器,"\"当对一段新的文本进行抽取关键词时,先抽取出所有的候选词,然后利用训练好的关键词抽取分类器,对各个候选词进行分类,最终将标签为关键词的候选词作为关键词。"

#sentence为要提取的文本,topK为要获取的关键词的个数,withWeight为是否显示权重,allowPOS为要提取关键词的词性

result=textrank(sentence, topK=5, withWeight=True, allowPOS=('ns', 'n', 'vn', 'v'))print(result)

运行结果:

jieba动态添加自定义词

#!/usr/bin/python#-*- coding: UTF-8 -*-

importjieba

content= "韩国东大门单鞋女方头绒面一脚蹬韩版休闲2020春季新款平底毛毛鞋"result=jieba.cut(content)print("自定义前:",",".join(result))

jieba.add_word("东大门")

jieba.add_word("一脚蹬")

jieba.add_word("毛毛鞋")

result=jieba.cut(content)print("自定义后:",",".join(result))

运行结果:

jieba自定义词库

jieba支持自定义词库,需要使用时把自定义的词库load进来后jieba就会同时使用 jieba初始化时加载的词库 和 自定义词库,词典格式和dict.txt一样,一个词占一行,每一行分三部分,第一部分为词语,第二部分为词频,最后为词性(可省略),并用空格隔开。

用法:jieba.load_userdict(file_name) #file_name为自定义词典的路径

自定义词库:

工程目录:

代码示例:

#!/usr/bin/python#-*- coding: UTF-8 -*-

importjieba

content= "韩国东大门单鞋女方头绒面一脚蹬韩版休闲2020春季新款平底毛毛鞋"result=jieba.cut(content)print("自定义前:",",".join(result))

jieba.load_userdict("./shoes")

result=jieba.cut(content)print("加载自定义库后:",",".join(result))

运行结果:

python训练词库_jieba 分词库(python)相关推荐

  1. python训练词库_在Python中训练NGramModel

    首先,正如您对问题的评论中所指出的,如果培训/运行速度对您来说是一个问题,KenLM可能是更好的选择.此时nltk.model主要用于教育/原型设计,但它并不快. 如果您仍然决定坚持使用NLTK,请继 ...

  2. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

  3. 【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)

    扇贝还是很不错的背单词系统,但是我一直不理解为什么官方提供的批量添加单词页面每次限制10个= =. 美剧党随手挤了很多单词准备导入的时候,还有从有道单词本导入的时候,都很尴尬..查了一下,还没有人写过 ...

  4. python读取文本两个数字的成语_只要2步!将搜狗词库(scel)转为Python可读的文本...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 将搜狗词库(scel)转化为python可读的文本(text)的方法方法 1. 利用R语言(方法简单) ① 载入词库(R语言) library(Rword ...

  5. 扇贝python_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)

    扇贝还是很不错的背单词系统,但是我一直不理解为什么官方提供的批量添加单词页面每次限制10个= =. 美剧党随手挤了很多单词准备导入的时候,还有从有道单词本导入的时候,都很尴尬..查了一下,还没有人写过 ...

  6. python标准词匹配_用 Python 自动化办公能做到哪些有趣或有用的事情?

    我想介绍一下我是如何从每天工作8小时,进化成每天工作10分钟的. 不涉及太多的技术细节,毕竟知乎是一个分(现)享(编)知(故)识(事)的地方 0.先自我介绍一下: 我不是程序员,大学学的也不是IT专业 ...

  7. 怎么装python的keras库_Keras 教程: Python 深度学习终极入门指南

    在这篇 Keras 教程中, 你将学到如何用 Python 建立一个卷积神经网络! 事实上, 我们将利用著名的 MNIST 数据集, 训练一个准确度超过 99% 的手写数字分类器. 开始之前, 请注意 ...

  8. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  9. python常用标准库有哪些-Python - 常用标准库

    sys 和Python解释器关系密切的标准库 sys.__doc__中已经说明了:这个模块提供了对一些对象的访问使用或维护的解释器和交互的功能强的解释 sys.argv 变量,专门用来向Python解 ...

最新文章

  1. 后台服务项目的白盒测试之旅
  2. 路由与交换大作业pkt_干货 | 交换机“练功大法”——略有小成(一)
  3. TensorFlow 常见错误与解决方法——长期不定时更新
  4. java io使用哪些设计模式_JAVA IO中的设计模式
  5. LeetCode 794. 有效的井字游戏(分类讨论)
  6. Shell编程之多命令顺序执行和管道符
  7. jmeter跨线程组传多个值_jmeter多用户登录跨线程组操作传值
  8. 【HISI系列】之SDK编码器开发
  9. ThinkPHP删除指定文件(物理删除) 点击链接可查看详情(对学习可有很大的帮助的...
  10. VUE-CLI可选的配置文件vue.config.js
  11. 最全事业单位考试计算机基础知识试题,最全的事业单位考试计算机基础知识试题...
  12. 导入依赖aspectjweaver以及spring从容器中使用getBean(类名.class)方法获取对象的注意
  13. arduino与74HC595驱动8位数码管(含代码)
  14. 【CocosCreator】单机游戏存档的常用加密解密方法
  15. raster包—stack函数
  16. win10安装跳过创建Microsoft账户
  17. windows10桌面鼠标右键出现卡顿解决方法
  18. 微信公众号开发:服务器配置(Java)
  19. codeforces 1669F
  20. 2021-07-28 关于软件测试从业人员的几个误解

热门文章

  1. 宽带连接错误678错误代码怎么解决?
  2. 转融通证券出借业务介绍
  3. 面试官:ZK分布式锁实现,你了解了吗?
  4. 如何以安全模式启动计算机,如何在Windows 10中以安全模式启动计算机
  5. 06 对包进行分类的高级过滤器
  6. SAP EPIC 银企直连 余额查询(建设银行)
  7. android studio 一直refreshing,AndroidStudio更新新版本后,项目一直处于Refreshing 'xxx' Gradle Project状态...
  8. Established
  9. dogpile搜索引擎
  10. java花卉网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署