assasin浅说结巴分词

上菜! 

# -*- coding: utf-8 -*-
#-----------------------------------------------------------------------------------------------------------------------
__Author__ = 'assasin'
__DateTime__ = '2020/1/1 20:31'
#-----------------------------------------------------------------------------------------------------------------------
'''
结巴分词的三种模式:
    精确模式: 试图将句子最精确的分开,适合文本分析;
    全模式:把句子中所有的可以成词的词语都扫描出来;但不能解决歧义问题
    搜索引擎模式:在精确模式的基础上,对长分词再次切分,提高召回率,
    适合于搜索引擎分词
支持繁体分词
支持自定义分词

安装: pip install jieba 

核心算法:基于前缀词典实现高效的词图扫描,生成句子中汉字
所有可能成词情况所构成的有向无环图
采用了动态规划查找最大概率路径,找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的HMM模型,使用 Viterbi 算法
'''

import jieba,sys,os
import jieba.analyse
import jieba.posseg



seg_list = jieba.cut('我来到北京的北京大学',cut_all=True)
print('full cut :' + ','.join(seg_list))

seg_list = jieba.cut('我来到北京的北京大学',cut_all=False)
print('default cut mode :' + ','.join(seg_list))

seg_list = jieba.cut_for_search('我来到北京的北京大学',HMM=False)
print('搜索引擎 mode :' + ','.join(seg_list))

print('='*40)
print('2.天假自定义词典/调整词典')
print('-'*40)

# 拆分
print('源文档: \t' + '/'.join(jieba.cut('如果放到数据库中将出错',HMM=False)))
print(jieba.suggest_freq(('中','将'),True))
print('改进文档: \t' + '/'.join(jieba.cut('如果放到数据库中将出错',HMM=False)))

# 合并
print('源文档: \t' + '/'.join(jieba.cut('[台中]正确应该不会被切开')))
print(jieba.suggest_freq(('台中'),True))
print('改进文档: \t' + '/'.join(jieba.cut('[台中]正确应该不会被切开')))


# 自定义词典
# sys.path.append("../")
# jieba.load_userdict("../utils/user-dict.txt")


print('='*40)
print('3.关键词提取')
print('-'*40)
print(' TF-TDF')
print('-'*40)

'''
extract_tags(sentence,topK=20,withWeight=False,allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词 默认为20
withWeight 是否一并返回关键词权重 默认FALSE
allowPOS 仅包括指定词性的词,默认为空,即不帅选
jieba.analyse.TFIDF(idf_path=None) 新建TFIDF实例,idf_path是TFIDF


'''
str = '正如专家们所言,渲染所谓的“中国黑客”威胁只不过是美国将其强化网络攻击能力“正当化”的借口。' \
      '事实上,美国构建网络攻击力量的历史远远超过外界的想象,甚至在“中国黑客”这个词语出现之前,' \
      '美国就将网络战运用到实战中了。1991年海湾战争中,美国通过情报系统,' \
      '在伊拉克从法国购买的防空系统中植入电脑病毒,在美军空袭前用遥控手段激活这些病毒,' \
      '导致美空军飞临巴格达上空时,伊拉克防空系统已经瘫痪。在“网络战”方面,' \
      '美国军方显然已经走在了理论研究的前面。1993年,美国兰德公司的两位学者才首次提出“网络战”的概念,' \
      '这两位学者从理论上界定了何为“网络战”,也系统介绍了如何利用网络“干扰、破坏敌方的信息和通讯系统”' \
      ',如何“在阻止敌方获取自己信息的同时,尽量多的掌握对方信息。'
for x,w in jieba.analyse.extract_tags(str,10,withWeight=True):
    print('%s %s'%(x,w))


print('='*40)
print(' textRank 文本排名')
print('-'*40)

for x,w in jieba.analyse.textrank(str,10,withWeight=True):
    print('%s %s'%(x,w))


print('='*40)
print(' 词性标注')
print('-'*40)

words = jieba.posseg.cut('我爱北京天安门')
for word,flag in words:
    print('%s %s' % (word, flag))


print('='*40)
print(' Tokenizw 返回词语在原文的起止位置')
print('-'*40)
print('默认模式')
print('-'*40)
# 包括起始位置 但不包括结束位置
result = jieba.tokenize('永和服饰品有限公司')
for tk in result:
    print('word %s\t\t start:%d\t\t end:%d\t\t'%(tk[0],tk[1],tk[2]))

print('='*40)
print(' 搜索模式')
print('-'*40)
result = jieba.tokenize('永和服饰品有限公司',mode='search')
for tk in result:
    print('word %s\t\t start:%d\t\t end:%d\t\t'%(tk[0],tk[1],tk[2]))



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值