最近需要用到的结巴分词一些常用的函数,记录下
分词代码示例:
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))
结果输出:
全模式: 我/ 随便/ 写/ 个/ 北京/ 河图/ 创意/ 意图/ 图片/ 有限/ 有限公司/ 公司
精确模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限公司
默认模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限公司
搜索引擎模式: 我/ 随便/ 写个/ 北京/ 河图/ 创意/ 图片/ 有限/ 公司/ 有限公司
代码示例
cut = jieba.cut("我随便写个北京河图创意图片有限公司")
print("默认模式: " ,cut )
for i in cut:
print(i)
cut = jieba.lcut("我随便写个北京河图创意图片有限公司") # 默认是cut_all=False,精确模式
print("默认模式: " ,cut )
输出结果:
默认模式: <generator object Tokenizer.cut at 0x00000245B3D907D8>
我
随便
写个
北京
河图
创意
图片
有限公司
默认模式: ['我', '随便', '写个', '北京', '河图', '创意', '图片', '有限公司']
北京河图创意图片有限公司 5 n
北京广场 10 ns
菜菜
中国(人民)财产保险
代码示例:
# 获取自定义词典
jieba.load_userdict(r"dict.txt")
cut = jieba.cut("我随便写个北京河图创意图片有限公司,中国(人民)财产保险股份有限公司") # 默认是cut_all=False,精确模式
print("默认模式: "+"/ ".join(cut))
输出:
默认模式: 我/ 随便/ 写个/ 北京河图创意图片有限公司/ ,/ 中国/ (/ 人民/ )/ 财产保险/ 股份/ 有限公司
可以看到“北京河图创意图片有限公司”被分出来了,但是“中国(人民)财产保险”未被分出,需要将它们的()在词典中和文本中去掉就可以了。
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/ 财产保险/ 股份/ 有限公司
import jieba.posseg as pseg
words = pseg.cut("我爱中国计算机科学与技术学院")
#使用for循环把分出的词及其词性用/隔开,并添加,和空格
print(words)
for w in words:
print(w.word, "/", w.flag, ", ", end=' ')
结果:
<generator object cut at 0x0000026230ADD410>
我 / r , 爱 / v , 中国 / ns , 计算机科学 / n , 与 / p , 技术 / n , 学院 / n ,
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 ,
['北京河图创意图片有限公司', '计算机科学', '学院', '技术']
-使用 jieba.tokenize(str,mode),输入参数只接受 unicode,mode为默认模式mode='search’为搜索模式
例子:
str ="我爱中国计算机科学与技术学院"
words = jieba.tokenize(str)
for w in words:
print("word %s\t\t start: %d \t\t 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 %s\t\t start: %d \t\t 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)