Python学习笔记4——jieba

目录

前言

一、自然语言处理(NLP)介绍

二、jieba简介

三、jieba安装

四、jieba使用

1. 导入jieba库:

2. 使用jieba进行分词:

3. 添加新词:

4. 词性标注:

5.应用实例


前言

本人初学python,为了提高学习效果,同时也希望能够给和我一样初学习python的小伙伴提供一些参考。这是学习笔记的第四篇。如有侵权,请联系删除。


一、自然语言处理(NLP)介绍

自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学领域的交叉学科,它致力于使计算机能够理解和处理人类语言。自然语言处理技术的发展对于提高人机交互的自然性、智能化信息检索、文本挖掘、机器翻译等多个领域具有重要意义。

中文分词是自然语言处理在中文领域的一个基础而关键的步骤。由于中文语言的特性,即中文是一种以字为基本书写单位的语言,词语之间没有明显的分隔符(如英文中的空格),因此需要通过分词技术将连续的文本切分成有意义的词语序列。

二、jieba简介

jieba是一个流行的中文分词Python库。它的名字就是中文“结巴”的拼音,也许是老外对中文分词太难了的调侃吧。它支持三种分词模式:精确模式、全模式和搜索引擎模式,能够满足不同的分词需求。除了分词功能,jieba还提供了词性标注、添加新词等功能,广泛应用于自然语言处理领域。

jieba · PyPIChinese Words Segmentation Utilitiesicon-default.png?t=N7T8https://pypi.org/project/jieba/

三、jieba安装

安装jieba分词库非常简单,可以通过Python的包管理工具pip来安装。在终端或者命令提示符中输入以下命令即可完成安装:

pip install jieba

四、jieba使用

1. 导入jieba库:

import jieba

2. 使用jieba进行分词:

  •    - 精确模式:适合文本分析,保留所有的词语,适合文本分析;
  • sentence = "我来到北京清华大学"
    seg_list = jieba.cut(sentence, cut_all=False)
    print("精确模式: " + "/".join(seg_list))

  •    - 全模式:尽可能多地切分出所有可以成词的词语;
  • seg_list = jieba.cut(sentence, cut_all=True)
    print("全模式: " + "/".join(seg_list))

  •    - 搜索引擎模式:在精确模式的基础上,对长词再次切分,适合用于搜索引擎构建索引;
seg_list = jieba.cut_for_search(sentence)
print("搜索引擎模式: " + "/".join(seg_list))

3. 添加新词:

   可以在jieba的默认词典之外,添加新的词语,以提高分词的准确率。

4. 词性标注:

   jieba还可以对分词结果进行词性标注,需要使用`jieba.pos_tag`函数:

sentence = "我来到北京清华大学"
pos_seg_list = jieba.pos_tag(jieba.cut(sentence))
print("词性标注: " + "/".join("".join(pos) for word, pos in pos_seg_list))

5.应用实例

注意导入txt文件时,文件的路径需要和代码文件在同一个文件夹下,否则需要再在代码注明路径。

import jieba.posseg as pseg

# 加载文本文件
with open('threekingdoms.txt', 'r', encoding='utf-8') as f:
    txt = f.read()

# 使用jieba进行词性标注
words = pseg.cut(txt)

# 创建一个字典来存储每个人名出现的次数
wordDict = {}
for word, flag in words:
    if flag == 'nr':  # 'nr'表示人名
        wordDict[word] = wordDict.get(word, 0) + 1

# 对人名出现次数进行排序
items = list(wordDict.items())
items.sort(key=lambda x: x[1], reverse=True)

# 输出出现次数最多的人名
for i in range(10):
    word, count = items[i]
    print("{0:<10}({1:>5})".format(word, count))

但是发现依然分词结果出现了问题,这时我们可以自己创建新词典导入,来完善结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值