python训练词库_jieba 分词库(python)

安装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))

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值