django jieba分词教程
2022年5月24日大约 3 分钟约 1031 字
jieba
中文分词系统
[TOC]
安装
pip install jieba
结巴分词分为三种模式:精确模式(默认)、全模式和搜索引擎模式
精确模式(默认)
试图将句子最精确地切开,适合文本分析;
import jieba
string = "我想和女朋友一起去北京故宫博物院参观和闲逛。"
cut = jieba.cut(string) # 返回生成器
result = ' '.join(cut)
print(result)
'我 想 和 女朋友 一起 去 北京故宫 博物馆 参观 和 闲逛'
全模式
把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
import jieba
string = "我想和女朋友一起去北京故宫博物院参观和闲逛。"
cut = jieba.cut(string, cut_all = True) # 返回生成器,使用lcut函数可以直接返回列表
result = ' '.join(cut)
print(result)
'我 想 和 女朋友 朋友 一起 去 北京 北京故宫 北京故宫博物院 故宫 故宫博物院 博物 博物院 参观 和 闲逛'
搜索引擎模式
在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
import jieba
string = "我想和女朋友一起去北京故宫博物院参观和闲逛。"
cut = jieba.cut_for_search(string) # 返回生成器,使用lcut_for_search函数直接返回列表
result = ' '.join(cut)
print(result)
'我 想 和 朋友 女朋友 一起 去 北京 故宫 博物 博物院 北京故宫博物院 参观 和 闲逛 。'
获取出现频率Top词
from collections import Counter
string = "会发灰非灰发灰"
c_list = Counter(string).most_common(20) # 获取Top 20
print(c_list)
关键词提取
基于 TF-IDF(term frequency–inverse document frequency) 算法的关键词抽取
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
# 用法:
# sentence :为待提取的文本
# topK: 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
# withWeight : 为是否一并返回关键词权重值,默认值为 False
# allowPOS : 仅包括指定词性的词,默认值为空,即不筛选
基于TF-IDF算法的关键词抽取
import jieba
import jieba.analyse
sentence = '全国港澳研究会会长徐泽在会上发言指出,学习系列重要讲话要深刻领会 主席关于香港回归后的宪制基础和宪制秩序的论述,这是过去20年特别是中共十八大以来"一国两制"在香港实践取得成功的根本经验。首先,要在夯实 香港的宪制基础、巩固香港的宪制秩序上着力。只有牢牢确立起"一国两制"的宪制秩序,才能保证"一国两制"实践不走样 、不变形。其次,要在完善基本法实施的制度和机制上用功。中央直接行使的权力和特区高度自治权的结合是特区宪制秩 序不可或缺的两个方面,同时必须切实建立以行政长官为核心的行政主导体制。第三,要切实加强香港社会特别是针对公 职人员和青少年的宪法、基本法宣传,牢固树立"一国"意识,坚守"一国"原则。第四,要努力在全社会形成聚焦发展、抵 制泛政治化的氛围和势能,全面准确理解和落实基本法有关经济事务的规定,使香港继续在国家发展中发挥独特作用并由 此让最广大民众获得更实在的利益。'
keywords = jieba.analyse.extract_tags(sentence, topK=20, withWeight=True, allowPOS=('n','nr','ns'))
print(keywords) # list
基于 TextRank 算法的关键词抽取
import jieba.analyse
# 直接使用,接口相同,注意默认过滤词性。
keywords = jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’))
keywords = jieba.analyse.extract_tags(sentence, topK=20, withWeight=True, allowPOS=('n','nr','ns'))
print(keywords) # list
# 新建自定义 TextRank 实例
jieba.analyse.TextRank()
# 基本思想:
# 将待抽取关键词的文本进行分词
# 以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
# 计算图中节点的PageRank,注意是无向带权图