python

您所在的位置:网站首页 rapper专有名词 python

python

2023-12-11 07:36| 来源: 网络整理| 查看: 265

jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性:

支持 3 种分词模式:精确模式、全模式、搜索引擎模式支持繁体分词支持自定义词典 1 分词

  可使用 jieba.cut 和 jieba.cut_for_search 方法进行分词,两者所返回的结构都是一个可迭代的 generator,可使用 for 循环来获得分词后得到的每一个词语(unicode),或者直接使用 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list。其中:

jieba.cut 和 jieba.lcut 接受 3 个参数: 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)cut_all 参数:是否使用全模式,默认值为 FalseHMM 参数:用来控制是否使用 HMM 模型,默认值为 Truejieba.cut_for_search 和 jieba.lcut_for_search 接受 2 个参数: 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)HMM 参数:用来控制是否使用 HMM 模型,默认值为 True

# 尽量不要使用 GBK 字符串,可能无法预料地错误解码成 UTF-8

 

Jieba提供了三种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析;全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

示例代码如下:

import jieba sent = "他来到北京大学读书。" seg_list1 = jieba.cut(sent, cut_all=True) print('全模式:', '/'.join(seg_list1)) seg_list2 = jieba.cut(sent, cut_all=False) print('精确模式:', '/'.join(seg_list2)) seg_list3 = jieba.cut(sent) print('默认精确模式:', '/'.join(seg_list3)) seg_list4 = jieba.cut_for_search(sent) print('搜索引擎模式:', '/'.join(seg_list4))

运行结果:

全模式: 他/来到/北京/北京大学/大学/读书// 精确模式: 他/来到/北京大学/读书/。 默认精确模式: 他/来到/北京大学/读书/。 搜索引擎模式: 他/来到/北京/大学/北京大学/读书/。 2、添加用户自定义词典

开发者可以指定自定义词典,以便包含 jieba 词库里没有的词,词典格式如下:

 词语 词频(可省略) 词性(可省略)

例如:

创新办 3 i 云计算 5 瑟琳娜 nz

使用 jieba.load_userdict(file_name) 即可载入词典。file_name 为文件类对象或自定义词典的路径

示例代码如下:

import jieba '''功能:添加用户自定义词典''' sent = "周大福是创新办主任也是云计算方面的专家" seg_list = jieba.cut(sent, cut_all=False) print('未添加用户词典:', '/'.join(seg_list)) #加载用户自定义词典 jieba.load_userdict("userDic.txt") seg_list = jieba.cut(sent, cut_all=False) print('添加用户词典:', '/'.join(seg_list))

运行结果:

未添加用户词典: 周大福/是/创新/办/主任/也/是/云/计算/方面/的/专家 添加用户词典: 周大福/是/创新办/主任/也/是/云计算/方面/的/专家 3、关键词提取

jieba 提供了两种关键词提取方法,分别基于 TF-IDF 算法和 TextRank 算法。

通过 jieba.analyse.extract_tags 方法可以基于 TF-IDF 算法进行关键词提取,该方法共有 4 个参数:

sentence:为待提取的文本topK:为返回几个 TF/IDF 权重最大的关键词,默认值为 20withWeight:是否一并返回关键词权重值,默认值为 FalseallowPOS:仅包括指定词性的词,默认值为空

通过 jieba.analyse.textrank 方法可以使用基于 TextRank 算法的关键词提取,其与 'jieba.analyse.extract_tags' 有一样的参数,但前者默认过滤词性(allowPOS=('ns', 'n', 'vn', 'v'))。

代码示例如下:

import jieba.analyse as anls #关键词提取 '''功能:提取关键词''' sent = open("all.txt", 'r', encoding='UTF-8').read() #基于tf-idf提取关键词 print("基于TF-IDF提取关键词结果:") for x, w in anls.extract_tags(sent, topK=20, withWeight=True): print('%s %s' % (x, w)) #基于textrank提取关键词 print("基于textrank提取关键词结果:") for x, w in anls.textrank(sent, withWeight=True): print('%s %s' % (x, w))

运行结果:

基于TF-IDF提取关键词结果:

故宫 0.2926176361335443 北京故宫 0.264979505 2019 0.22698925638417722 外朝 0.1513261709227848 2018 0.1513261709227848 中心 0.12202795792556963 古建筑 0.11424658644012657 大殿 0.10322119571443038 紫禁城 0.09920117016822785 永乐 0.09911316359455696 统称 0.0955449146286076 宫殿 0.09541328542329114 万平方米 0.0929427829007595 列为 0.09066487540987342 九千余 0.08797897248101266 世界 0.08292777352348102 和内廷 0.07779265657911393 72 0.0756630854613924 15 0.0756630854613924 1406 0.0756630854613924

基于textrank提取关键词结果:

故宫 1.0 中心 0.9908920177809065 世界 0.5734006593111067 大殿 0.5521326736013975 北京故宫 0.5316046737608524 英国 0.4986608115801715 国家 0.48905863236581826 修缮 0.457942099649872 中国 0.4571298768895292 列为 0.4563189310093983 建筑 0.4465371080385551 南京 0.4374665601969024 外朝 0.43039726183147553 统称 0.42592844268023056 工作 0.38930993246593065 保护 0.38300696880781676 保存 0.37770077979626976 皇后 0.3717748063436477 美国白宫 0.37027900907588707 居住 0.36903003334388784 4、词性标注 import jieba.posseg as pseg #词性标注 sent = "他在北京大学读书" words = pseg.cut(sent) for word, flag in words: print("{0} {1}".format(word, flag))

 运行结果:

他 r Prefix dict has been built succesfully. 在 p 北京大学 nt 读书 n

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3