jieba分词

jieba分词的几种模式

import jieba

sent = '中文分词是文本处理不可或缺的一步!'

seg_list = jieba.cut(sent, cut_all=True)

print('全模式:', '/ ' .join(seg_list)) 

seg_list = jieba.cut(sent, cut_all=False)
print('精确模式:', '/ '.join(seg_list)) 

seg_list = jieba.cut(sent)  
print('默认精确模式:', '/ '.join(seg_list))

seg_list = jieba.cut_for_search(sent)  
print('搜索引擎模式', '/ '.join(seg_list))
全模式: 中文/ 分词/ 是/ 文本/ 文本处理/ 本处/ 处理/ 不可/ 不可或缺/ 或缺/ 的/ 一步/ / 
精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !
默认精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !
搜索引擎模式 中文/ 分词/ 是/ 文本/ 本处/ 处理/ 文本处理/ 不可/ 或缺/ 不可或缺/ 的/ 一步/ !

带词性标注的模式

import jieba.posseg as psg

sent = '中文分词是文本处理不可或缺的一步!'

seg_list = psg.cut(sent)

print(' '.join(['{0}/{1}'.format(w, t) for w, t in seg_list]))
中文/nz 分词/n 是/v 文本处理/n 不可或缺/l 的/uj 一步/m !/x

加载自己的词典

import jieba 
#加载系统词典
jieba.set_dictionary('./data/dict.txt.big')

print('自定义词典内容:')
with open('./data/user_dict.utf8', 'r') as f:
    for l in f:
        print(l)

print('------华丽的分割线-------')
sent = 'jieba分词非常好用,可以自定义金融词典!'
seg_list = jieba.cut(sent)
print('加载词典前:', '/ '.join(seg_list))

jieba.load_userdict('./data/user_dict.utf8')
seg_list = jieba.cut(sent)
print('加载词典后:', '/ '.join(seg_list))

输出结果

Building prefix dict from /Users/lx/Documents/book/code/chapter2/data/dict.txt.big ...
Loading model from cache /var/folders/5d/hz_f9tvs0t37skhfcqsbspw00000gn/T/jieba.ue6ba5e3027eff0fb7a5ab8c354ddaecf.cache
自定义词典内容:
大波浪 10

jieba分词 n

金融词典 7  

------华丽的分割线-------
Loading model cost 1.512 seconds.
Prefix dict has been built succesfully.
加载词典前: jieba/ 分词/ 非常/ 好用/ ,/ 可以/ 自定义/ 金融/ 词典/ !
加载词典后: jieba分词/ 非常/ 好用/ ,/ 可以/ 自定义/ 金融词典/ !

自己定义一些词

import jieba
sent = '好丑的证件照片'
print('/ '.join(jieba.cut(sent, HMM=False)))

jieba.suggest_freq(('证件照片'), True)
print('/ '.join(jieba.cut(sent, HMM=False)))
好丑/ 的/ 证件/ 照片
好丑/ 的/ 证件照片

这边一次只能制定一个词,不能出现下面这种形式

jieba.suggest_freq(('证件照片','好丑的'), True) #这样会输出为0

要想定义多个单词,只能多次使用,是不是有更好,更简洁的方法还不清楚。

jieba.suggest_freq(('好丑的'), True)
jieba.suggest_freq(('证件照片'), True)

结巴分析方法

import jieba.analyse as aly

content = '''
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。
因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临很多挑战,包括自然语言理解,因此,自然语言处理涉及人机交互的面积。
在NLP诸多挑战涉及自然语言理解,即计算机源于人为或自然语言输入的意思,和其他涉及到自然语言生成。
'''

#加载自定义idf词典
aly.set_idf_path('./data/idf.txt.big')
#加载停用词典
aly.set_stop_words('./data/stop_words.utf8')

# 第一个参数:待提取关键词的文本
# 第二个参数:返回关键词的数量,重要性从高到低排序
# 第三个参数:是否同时返回每个关键词的权重
# 第四个参数:词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词
keywords = aly.extract_tags(content, topK=10, withWeight=True, allowPOS=())

for item in keywords:
    # 分别为关键词和相应的权重
    print(item[0], item[1])

抽出重要的单词

自然语言 2.0790900005043476
NLP 0.5197725001260869
计算机 0.5197725001260869
领域 0.5197725001260869
人机交互 0.5197725001260869
挑战 0.5197725001260869
理解 0.5197725001260869
处理 0.4705091875965217
涉及 0.3839134341652174
人工智能 0.25988625006304344

使用textrank

import jieba.analyse as aly

content = '''
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。
因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临很多挑战,包括自然语言理解,因此,自然语言处理涉及人机交互的面积。
在NLP诸多挑战涉及自然语言理解,即计算机源于人为或自然语言输入的意思,和其他涉及到自然语言生成。
'''
# 第一个参数:待提取关键词的文本
# 第二个参数:返回关键词的数量,重要性从高到低排序
# 第三个参数:是否同时返回每个关键词的权重
# 第四个参数:词性过滤,为空表示过滤所有,与TF—IDF不一样!
keywords = jieba.analyse.textrank(content, topK=10, withWeight=True, allowPOS=('ns', 'n', 'vn', 'v'))
for item in keywords:
    # 分别为关键词和相应的权重
    print(item[0], item[1])

输出

涉及 1.0
计算机 0.9618169519358478
处理 0.8124660402732825
理解 0.7885898958379202
挑战 0.7833575495518058
人机交互 0.7343470452632993
语言学 0.727536034596871
人类 0.6290562193534068
人工智能 0.5809911385488661
关注 0.577881611632419

下面一个实例,请参考提取关键词

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值