栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

jieba分词使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jieba分词使用

最近需要用到的结巴分词一些常用的函数,记录下

1. 分词功能
  • jieba.cut(text, cut_all, HMM),接受三个输入参数: text需要分词的文本;cut_all =True采用全模式,cut_all=False采用精确模式;HMM 是否使用 HMM 模型。
  • jieba.cut_for_search(text, HMM),接受两个输入参数: text需要分词的文本;HMM 是否使用 HMM 模型。
  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语
  • jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

分词代码示例:

import jieba

cut = jieba.cut("我随便写个北京河图创意图片有限公司", cut_all=True)
print("全模式: " + "/ ".join(cut))  # 全模式

cut = jieba.cut("我随便写个北京河图创意图片有限公司", cut_all=False)
print("精确模式: " + "/ ".join(cut))  # 精确模式

cut = jieba.cut("我随便写个北京河图创意图片有限公司")  # 默认是cut_all=False,精确模式
print("默认模式: "+"/ ".join(cut))

cut = jieba.cut_for_search("我随便写个北京河图创意图片有限公司")  # 搜索引擎模式
print("搜索引擎模式: "+"/ ".join(cut))

结果输出:

全模式: 我/ 随便/ 写/ 个/ 北京/ 河图/ 创意/ 意图/ 图片/ 有限/ 有限公司/ 公司
精确模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限公司
默认模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限公司
搜索引擎模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限/ 公司/ 有限公司
  • jieba.cut ()与jieba.lcut ()的输出比较:

代码示例

cut = jieba.cut("我随便写个北京河图创意图片有限公司")
print("默认模式: " ,cut )

for i in cut:
    print(i)

cut = jieba.lcut("我随便写个北京河图创意图片有限公司")  # 默认是cut_all=False,精确模式
print("默认模式: " ,cut )

输出结果:

默认模式:  
我
随便
写个
北京
河图
创意
图片
有限公司
默认模式:  ['我', '随便', '写个', '北京', '河图', '创意', '图片', '有限公司']
2.自定义字典
  • jieba 词库里没有的词,可以自定义添加,提高准确度
  • 使用 jieba.load_userdict(file_name) ,file_name为字典名
  • 词典格式:一词占一行;一行有三部分:词语、词频(可省略)、词性(可省略),用空格隔开。
  • 注意写入词典不能有符号,例如“(”,“《”,否则分词不准。
  • 可以使用 jieba.add_word(‘词词’),jieba.del_word(‘词词’),可对字典中的词进行添加,删除
    词典样例:
北京河图创意图片有限公司 5 n
北京广场 10 ns
菜菜
中国(人民)财产保险

代码示例:

# 获取自定义词典
jieba.load_userdict(r"dict.txt")
cut = jieba.cut("我随便写个北京河图创意图片有限公司,中国(人民)财产保险股份有限公司")  # 默认是cut_all=False,精确模式
print("默认模式: "+"/ ".join(cut))

输出:

默认模式: 我/ 随便/ 写个/ 北京河图创意图片有限公司/ ,/ 中国/ (/ 人民/ )/ 财产保险/ 股份/ 有限公司

可以看到“北京河图创意图片有限公司”被分出来了,但是“中国(人民)财产保险”未被分出,需要将它们的()在词典中和文本中去掉就可以了。

  • jieba.add_word(‘词词’),jieba.del_word(‘词词’) 使用:
cut = jieba.cut("我随便写个北京fff创意图片有限公司,中国ren财产保险股份有限公司")  
print("print: "+"/ ".join(cut))
#添加词
jieba.add_word('北京fff')
jieba.add_word('创意图片有限公司')
#删除词
jieba.del_word('中国')
cut = jieba.cut("我随便写个北京fff创意图片有限公司,中国ren财产保险股份有限公司")  
print("print: "+"/ ".join(cut))

结果输出:

print: 我/ 随便/ 写个/ 北京/ fff/ 创意/ 图片/ 有限公司/ ,/ 中国/ ren/ 财产保险/ 股份/ 有限公司
print: 我/ 随便/ 写个/ 北京fff/ 创意图片有限公司/ ,/ 中/ 国/ ren/ 财产保险/ 股份/ 有限公司
3.词性标注
  • 使用pseg.cut(str),返回可迭代的generator,标注句子分词后的词的词性。word(分词后的词),flag(分词后的词性)
    例子:
import jieba.posseg as pseg
words = pseg.cut("我爱中国计算机科学与技术学院")
#使用for循环把分出的词及其词性用/隔开,并添加,和空格
print(words)
for w in words:
     print(w.word, "/", w.flag, ", ", end=' ')

结果:


我 / r ,  爱 / v ,  中国 / ns ,  计算机科学 / n ,  与 / p ,  技术 / n ,  学院 / n ,  
4.关键词抽取
  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
  • sentence 为待提取的文本
  • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
  • withWeigh为是否一并返回关键词权重值,默认值为 False
  • allowPOS 仅包括指定词性的词,默认值为空
  • 以列表形式返回
    例子:
import jieba.analyse
str ="我随便写个北京河图创意图片有限公司,我爱中国计算机科学与技术学院"
words = pseg.cut(str)
for w in words:
     print(w.word, "/", w.flag, ", ", end=' ')
print('n')
list = jieba.analyse.extract_tags(str,  allowPOS=("n"))#提取词性为n的词
print(list)

结果:返回列表形式

我 / r ,  随便 / d ,  写 / v ,  个 / q ,  北京河图创意图片有限公司 / n ,  , / x ,  我 / r ,  爱 / v ,  中国 / ns ,  计算机科学 / n ,  与 / p ,  技术 / n ,  学院 / n ,  

['北京河图创意图片有限公司', '计算机科学', '学院', '技术']

5.返回词语在原文的起止位置

-使用 jieba.tokenize(str,mode),输入参数只接受 unicode,mode为默认模式mode='search’为搜索模式
例子:

str ="我爱中国计算机科学与技术学院"
words = jieba.tokenize(str)
for w in words:
    print("word %stt start: %d tt end:%d" % (w[0],w[1],w[2]))

结果:

word 我		     start: 0 		 end:1
word 爱		     start: 1 		 end:2
word 中国		 start: 2 		 end:4
word 计算机科学	 start: 4 		 end:9
word 与		     start: 9 		 end:10
word 技术		 start: 10 		 end:12
word 学院		 start: 12 		 end:14

例子:

str ="我爱中国计算机科学与技术学院"
words = jieba.tokenize(str,mode='search')
for w in words:
    print("word %stt start: %d tt end:%d" % (w[0],w[1],w[2]))

结果:

ord 我		     start: 0 		 end:1
word 爱		     start: 1 		 end:2
word 中国		 start: 2 		 end:4
word 计算		 start: 4 		 end:6
word 算机		 start: 5 		 end:7
word 科学		 start: 7 		 end:9
word 计算机		 start: 4 		 end:7
word 计算机科学	 start: 4 		 end:9
word 与		     start: 9 		 end:10
word 技术		 start: 10 		 end:12
word 学院		 start: 12 		 end:14

[参考:]
(https://blog.csdn.net/u014028063/article/details/85231523)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号