python二级考试备考之 jieba 中文分词

2020年1月1日 209点热度 0人点赞 0条评论

图片

0 引言

  接上一篇公众号文章2020年元旦快乐!备考python二级考试之jieba分词,这篇文章只是对一个例题进行了解析,没有详细的讲解,jieba分词的基本用法。jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性:
  • 支持 3 种分词模式:精确模式、全模式、搜索引擎模式
  • 支持繁体分词
  • 支持自定义词典

jieba库的安装

因为 jieba 是一个第三方库,所有需要我们在本地进行安装。
Windows 下使用命令安装:在联网状态下,在命令行下输入 pip install jieba 进行安装,安装完成后会提示安装成功 

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 参数:是否使用全模式,默认值为 False

    • HMM 参数:用来控制是否使用 HMM 模型,默认值为 True

  • jieba.cut_for_search 和 jieba.lcut_for_search 接受 2 个参数:

    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)

    • HMM 参数:用来控制是否使用 HMM 模型,默认值为 True

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

 

1.1 全模式和精确模式# 全模式

seg_list = jieba.cut("他来到上海交通大学", cut_all=True)
print("【全模式】:" + "/ ".join(seg_list))
 【全模式】:他/ 来到/ 上海/ 上海交通大学/ 交通/ 大学

# 精确模式
seg_list = jieba.cut("他来到上海交通大学", cut_all=False)
print("【精确模式】:" + "/ ".join(seg_list))

【精确模式】:他/ 来到/ 上海交通大学
type(seg_list)
generator
# 返回列表
seg_list = jieba.lcut("他来到上海交通大学", cut_all=True)
print("【返回列表】:{0}".format(seg_list))

【返回列表】:['他', '来到', '上海', '上海交通大学', '交通', '大学']
type(seg_list)

简单应用:

需求:使用 jieba 分词对一个文本进行分词,统计次数出现最多的词语,这里以三国演义为例

# -*- coding: utf-8 -*-import jieba
txt = open("三国演义.txt", "r", encoding='utf-8').read()words = jieba.lcut(txt) # 使用精确模式对文本进行分词counts = {} # 通过键值对的形式存储词语及其出现的次数
for word in words: if len(word) == 1: # 单个词语不计算在内 continue else: counts[word] = counts.get(word, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1
items = list(counts.items())items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序
for i in range(3): word, count = items[i] print("{0:<5}{1:>5}".format(word, count))

图片

70710python二级考试备考之 jieba 中文分词

这个人很懒,什么都没留下

文章评论