1 jieba 库的安装
pip install jieba
2 jieba 库的介绍
jieba是优秀的中文分词第三方库
- 中文文本需要通过分词获得单个的词语
- jieba是优秀的中文分词第三方库,需要额外安装
- jieba库提供三种分词模式,最简单只需掌握一个函数
jieba分词的原理
jieba分词依靠中文词库
- 利用一个中文词库,确定中文字符之间的关联概率
- 中文字符间概率大的组成词组,形成分词结果
- 除了分词,用户还可以添加自定义的词组
3 jieba 库的使用
jieba库的三种模式
- 精确模式:把文本精确的切分开,不存在冗余单词
- 全模式:把文本中所有可能的词语都扫描出来,有冗余
- 搜索引擎模式:在精确模式基础上,对长词再次切分
- 英文文本:Hamet 分析词频https://python123.io/resources/pye/hamlet.txt
- 中文文本:《三国演义》 分析人物https://python123.io/resources/pye/threekingdoms.t
英文示例
# CalHamletV1.py
def getText():
txt = open("hamlet.txt","r").read()
txt = txt.lower()
for ch in '!"#$%&()*+-./:;<=>?@[\\]^_‘{|}~':
txt = txt.replace(ch," ")
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in 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]
print("{0:<10}{1:>5}".format(word,count))
the 1138
and 938
to 751
of 668
a 542
i 528
my 514
you 473
hamlet 433
in 433
中文示例
import jieba
txt = open("threekingdoms.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
items= list(counts.items())
items.sort(key = lambda x:x[1],reverse = True)
for i in range (15):
word,count = items[i]
print("{0:<10}{1:>5}".format(word,count))