Python——jieba优秀的中文分词库(基础知识+实例)

这篇具有很好参考价值的文章主要介绍了Python——jieba优秀的中文分词库(基础知识+实例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hello,World!

从去年开始学习Python,在长久的学习过程中,发现了许多有趣的知识,不断充实自己。今天我所写的内容也是极具趣味性,关于优秀的中文分词库——jieba库。

🏔关于Jieba

        🐒什么是jieba?

1、jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性:

  • 中文文本需要通过分词获得单个的词语
  • jieba需要额外安装
  • jieba库提供三种分词模式

2、jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。【这一点是很有趣的😄!】

3、jieba库支持四种分词模式:精确模式、全模式、搜索引擎模式、paddle模式,并且支持繁体分词,以及自定义词典。具体介绍:

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

        算法

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

正文来了!!!

🏔一、安装jieba库

        🐒1.  此次内容创作,我主要使用的软件有Anaconda,Jupyter Notebook,Pycharm等,看过我之前文章的大佬们,相信对Anaconda都有一个简单的了解,这里就不一一叙述了,直接安装🙂。

因为jieba库不是Anaconda中自带的,所以需要我们自己下载,首先进入jieba库官网:jieba · PyPIhttps://pypi.org/project/jieba/#files

如下图:

jieba,中文分词,自然语言处理

 点击官网中文件下载即可(如果下载速度比较慢,可以私聊我!💪)

        🐒2.  将压缩包解压到anaconda的pkgs目录。

        🐒3.  打开anaconda prompt,切换目录至比如我的D:/anaconda/pkgs/jieba-0.42,输入cmd进入命令行模式
执行  python setup.py install   即可。

jieba,中文分词,自然语言处理

        🐒4.  再次打开jupyter notebook 测试

import jieba,正常。pycharm中 import jieba ,正常。由此,我们的第一步安装完成!

pip install jieba

import jieba

 🏔二、jieba库的使用

        🐒1.  精确模式

        将语句最精确的切分,不存在冗余数据,适合做文本分析。

        #精确模式

        jieba.cut(text, cut_all=False)

        案例分析:

        精确模式分析是不存在冗余数据的,把完整的text文本按照中文词库的标准完成拆分。如图所示:jieba,中文分词,自然语言处理

import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

      🐒 2.  全模式

        将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据。

        #全模式

        jieba.cut(text, cut_all=True)

        案例分析:

        全模式与精确模式的不同在于,全模式存在冗余数据,是将存在可能的词语全部切分出来,从第一个字到最后一个字遍历作为词语第一个字。例如:以“吉”开头的词语包括“吉林”,“吉林省”,以“长”开头的名词包括“长春”“长春市”等等。如图所示:

jieba,中文分词,自然语言处理

 不难看出,输出的内容存在冗余数据。

seg_list = jieba.cut("我来到吉林省长春市高新技术产业开发区光谷大街1188号", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

      🐒 3、搜索引擎模式

        在精确模式的基础上,对长词再次进行切分,提高召回率,适合用于搜索引擎分词。

        #搜索引擎模式

        jieba.lcut_for_search(text)

        案例分析:

        搜索引擎模式是将精确模式中的长词,再次按照全模式切分。如图所示:

jieba,中文分词,自然语言处理

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

        🐒4、Viterbi算法

jieba,中文分词,自然语言处理

 此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了。

        🐒5、自定义词典

        在jieba自定义字典方面,目前我所了解到的常见的应用环境是各网络平台对违禁词的查询搜索处理,以及网站也对用户个人信息的处理,对购物方面评价信息的处理等等。因此,我同样也使用了jupyter notebook尝试了自定义词典的使用,text文本文件及运行结果如下图所示:

jieba,中文分词,自然语言处理

 jieba,中文分词,自然语言处理

//自定义词典使用
import jieba
test_sent = "李小福是创新办主任也是云计算方面的专家"
jieba.load_userdict("E://userdict.txt")
words = jieba.cut(test_sent)
print(list(words))

         可以看出,我的自定义词典在运行过程中,起到了具体的作用。可想而知,当我们在对一篇文章进行内容的分析处理是,也是可以使用jieba库的!可以通过用户自定义词典来增强歧义纠错能力!

部分文本解析语法:

def getext():
    fname=input("请输入要打开的文件路径及名称,以txt结尾:")
    fo=open(fname)      #打开该文件,默认是文本文件,文本文件其实就是一个字符串
    txt=fo.read()       #<文件名>.read()  默认是读取文件全部内容
    txt=txt.lower()     #将文本所有字母小写
    for ch in '!"#$%()*+<_>/:;<>=?@[\]\^_{}|~':
        txt=txt.replace(ch,'')       #将文本中含有的所有上述字符都变为空格
    return txt
hamlettxt=getext()
words=hamlettxt.split()      #默认值,是将文本中单词按照空格分成一个一个的单词,并将结果保存成列表类型
counts={}                    #定义一个空字典类型,因为我们希望单词和该单词出现的次数作为一个键值对
for word in words:           #遍历words列表的每一个值
    counts[word]=counts.get(word,0)+1
items=list(counts.items())      #将该字典转化成一个列表,其中的键值对是以元组的形式存在
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=items[i]       #items[i] 是个元组,元组可以带括号,可以不带括号;赋值
    print("{:<10}{:>5}".format(word,count))

  🏔三、 使用语法

                🐒1.  对词组的基本操作

         添加

str = "你好呀,我叫李华!多多关照!"
jieba.add_word("你")
print(jieba.lcut(str))

         删除

str = "你好呀,我叫李华!多多关照!"
jieba.del_word("李华")
print(jieba.lcut(str))

         调整词出现的频率

str = "你好呀,我叫李华!多多关照!"
jieba.suggest_freq(("李", "华"), True)
print(jieba.lcut(str))

               🐒 2.  关键字提取

        TFIDF算法

import jieba.analyse # 导包

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
allowPOS=())
jieba.analyse.TFIDF(idf_path=None) # 创建一个新的 TFIDF 实例,idf_path是指指定 IDF 频率文件的路径

参数:

  • sentence:要提取的文本
  • topK:返回多少个具有最高TF/IDF权重的关键字。默认值为 20
  • withWeight:是否返回关键字的TF/IDF权重。默认为假
  • allowPOS:过滤包含POS(词性)的单词。空无过滤,可以选择['ns', 'n', 'vn', 'v','nr']

        TextRank算法

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) # 有默认词性
jieba.analyse.TextRank() # 新建自定义 TextRank 实例

                🐒3.  词性标注

jieba.posseg.POSTokenizer(tokenizer=None)

新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器

jieba.posseg.dt 为默认词性标注分词器

import jieba.posseg
str = "你好呀,我叫李华!多多关照!"
pt = jieba.posseg.POSTokenizer()
print(pt.lcut(str)) # 得到 pair键值对,使用遍历取值
# print(jieba.posseg.cut(str)) # 作用一样
for i, k in ps.lcut(str):
print(i, k)

                🐒4.  Tokenize:返回词语在原文的起止位置

  • 注意,输入参数只接受 unicode

默认模式

result = jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:
    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

jieba,中文分词,自然语言处理

搜索模式

result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:
    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

jieba,中文分词,自然语言处理

         如上文所示,关于Pyhton中文分词库——jieba库的介绍,暂时结束,如果后续学习到了新的内容,会再次进行介绍!各位大佬们,如果发现文章内容错误,希望可以指出,评论或私信都可🙂

部分内容来源:GitHub - fxsjy/jieba: 结巴中文分词文章来源地址https://www.toymoban.com/news/detail-779074.html

到了这里,关于Python——jieba优秀的中文分词库(基础知识+实例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中文分词库jieba的三种模式介绍

    精准模式 jieba.cut(test_text, cut_all=False): 试图将句子最精确地分开,适合文本分析 全模式 jieba.cut(test_text, cut_all=True): 把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义 搜索引擎模式 jieba.cut_for_search(test_text):在精确模式的基础上,对长词再次切分,提

    2024年02月13日
    浏览(44)
  • 【一】头歌平台实验-基于jieba的中文分词实战

           近年来,随着自然语言处理技术的日益成熟,开源实现的分词工具越来越多,如 Ansj 、盘古分词等。Jieba 是目前最好的 Python 中文分词组件。 本实训主要介绍 Jieba 模块的使用,并通过示例与实战,帮助大家掌握使用 Jieba 的方法。 1、jieba的特点         分词是自然

    2024年02月05日
    浏览(143)
  • 使用.NET Jieba.NET 的 PosSegmenter 实现中文分词匹配

    ​ 目录 引言 1. 什么是中文分词 2. Jieba.NET简介 3. PosSegmenter介绍 4. 实现中文分词匹配 4.1 安装Jieba.NET库 4.2 创建PosSegmenter实例 4.3 分词和词性标注 4.4 中文分词匹配 5. 总结           在自然语言处理领域,中文分词是一个重要且基础的任务。中文文本通常没有像英文那样的

    2024年02月11日
    浏览(76)
  • es自定义分词器支持数字字母分词,中文分词器jieba支持添加禁用词和扩展词典

    自定义分析器,分词器 所有字段检索 高亮搜索 分词测试 GET /test_index/_analyze jieba中文分词支持添加禁用词和扩展词库功能 创建索引:PUT http://xxxx:9200/test_index 分词测试: GET http://xxxxxx:9200/test_index/_analyze

    2024年02月11日
    浏览(44)
  • 文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+         中文分词是将中文文本切分成一系列有意义的词语的过程。中文分词可以用于

    2024年02月11日
    浏览(65)
  • NLP基础—jieba分词

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

    2024年04月17日
    浏览(45)
  • python之jieba分词库使用

    一. 介绍 A. 什么是jieba库 jieba库是一款开源的中文分词工具,能够将中文文本切分成词语。 B. jieba库的特点和优势 支持四种分词模式:精确模式、全模式、搜索引擎模式和paddle模式。 提供自定义词典功能,可以添加、删除词语。 支持提取和词性标注。 提供Tokenize接口

    2024年02月16日
    浏览(39)
  • python使用jieba分词,词频统计,基本使用

    python采用第三方库进行中文分词,本文章只是记录文章。 1.需要下载第三方库jieba:                 cmd: pip install jieba 2.为了方便测试,在同级目录下,准备一个txt格式文件,文件名随意,这里我也是随便取的:                 文件路径可以是绝对路径,也可以是相对路

    2024年02月07日
    浏览(43)
  • 通过Python的jieba库对文本进行分词

    大家好,我是空空star,本篇给大家分享一下通过Python的jieba库对文本进行分词。 Python的jieba库是一个中文分词工具,它可以将一段中文文本分割成一个一个的词语,方便后续的自然语言处理任务,如文本分类、情感分析等。jieba库使用了基于前缀词典的分词方法,能够处理中

    2024年02月05日
    浏览(42)
  • Python使用jieba库分词并去除标点符号

    相对于英文文本,中文文本挖掘面临的首要问题就是分词,因为中文的词之间没有空格。在Python中可以使用jieba库来进行中文分词。 但是在中文中,标点符号出现的频率也是很高的,在使用jieba库对带有标点符号的汉语句子进行分词时,标点符号出现在分词结果中时,对于后

    2024年02月04日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包