2022年 11月 7日

Python中jieba库的使用

jieba库是一款优秀的 Python 第三方中文分词库,利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果

目录

jieba库的安装与引用

安装

引用

jiaba库分词功能说明

jieba.cut 和 jieba.lcut

1.精确模式

2.全模式 

3.搜索引擎模式

4. paddle模式

5.向分词词典添加新词

6. jieba.Tokenizer(dictionary=DEFAULT_DICT) 

 使用案例

《沉默的羔羊》之最多单词


jieba库的安装与引用

安装

cmd中安装

pip install jieba

Pycharm中安装:

打开 settings(设置),打开 Project Interpreter ,点击 + 号,搜索 jieba ,install Package即可。

引用

使用jieba库之前需要:

import jieba

jiaba库分词功能说明

jieba.cut 和 jieba.lcut

  1. test_list = jieba.cut("今天阳光明媚", cut_all=True)
  2. print(test_list)
  3. >>> <generator object Tokenizer.cut at 0x00000201834973C0>
  4. test_list = jieba.lcut("今天阳光明媚", cut_all=True)
  5. print(test_list)
  6. >>> ['今天', '阳光', '阳光明媚', '光明', '明媚']
  7. # lcut 将返回的对象转化为list对象返回

1.精确模式

精确模式(cut_all=False):试图将语句最精确的切分,不存在冗余数据,适合做文本分析

  1. test_list = jieba.cut("今天阳光明媚", cut_all=False)
  2. print("精确模式: " + "*".join(test_list))
  3. >>> 精确模式: 今天*阳光明媚

2.全模式 

全模式(cut_all=True):将语句中所有可能是词的词语都切分出来,速度快,但是存在冗余数据

  1. test_list = jieba.cut("今天阳光明媚", cut_all=True)
  2. print("全模式: " + "*".join(test_list))
  3. >>> 全模式: 今天*阳光*阳光明媚*光明*明媚

3.搜索引擎模式

搜索引擎模式(cut_for_search ;lcut_for_search:在精确模式的基础上,对长词再次进行切分

  1. test_list = jieba.cut_for_search("今天阳光明媚,是一个适合出去散步的好天气,我们现在就出发吧") # 搜索引擎模式
  2. print("搜索引擎模式: " + "*".join(test_list))
  3. >>> 搜索引擎模式: 今天*阳光*光明*明媚*阳光明媚*,*是*一个*适合*出去*散步*的*好*天气*,*我们*现在*就*出发*吧

4. paddle模式

paddle模式(enable_paddle):利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词,同时支持词性标注(paddle模式使用需安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1)

  1. # 通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码;
  2. jieba.enable_paddle() # 初次使用可以自动安装并导入代码
  3. test_list = jieba.cut(str, use_paddle=True)
  4. print('Paddle模式: ' + '*'.join(list(test_list)))
  5. >>> Paddle模式: 今天*阳光明媚

5.向分词词典添加新词

jieba.add_word() 向分词词典增加新词
>>>jieba.add_word(“想加入的新词”)

6. jieba.Tokenizer(dictionary=DEFAULT_DICT) 

新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射

  1. test = "今天是一个难得的好天气"
  2. result = jieba.tokenize(test) # Tokenize:返回词语在原文的起始位置
  3. for i in result:
  4. print(i)
  5. >>>
  6. ('今天', 0, 2)
  7. ('是', 2, 3)
  8. ('一个', 3, 5)
  9. ('难得', 5, 7)
  10. ('的', 7, 8)
  11. ('好', 8, 9)
  12. ('天气', 9, 11)

 使用案例

《沉默的羔羊》之最多单词

《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于等于2且出现频率最多的单词。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词。

(案例使用书籍只是一个例子,大家可自行更换书籍进行实验,库使用原理相同)

  1. import jieba
  2. f = open("沉默的羔羊.txt", encoding='utf-8')
  3. ls = jieba.lcut(f.read())
  4. d = {}
  5. for w in ls:
  6. if len(w) >= 2:
  7. d[w] = d.get(w, 0) + 1
  8. maxc = 0
  9. maxw = ""
  10. for k in d:
  11. if d[k] > maxc :
  12. maxc = d[k]
  13. maxw = k
  14. elif d[k] == maxc and k > maxw:
  15. maxw = k
  16. print(maxw)
  17. f.close()