jieba库使用
1.介绍
jieba库是python中一个非常重要的第三方中文分词函数库,其工作原理是:利用一个中文词库,将待分词的内容与词库进行对比,通过图结构和动态规划的方法找到最大概率的词组。该jieba库还提供了增加自定义中文词组的功能。
注意:
是中文分词函数库
jieba库支持一下3种分词模式:
精确模式:
将句子精确的切开,适合文本分析
全模式:
把句子中所有可以成词的词语都描述出来,速度非常快,但不能消除歧义
搜索引擎模式:
在精确模式的基础上,对长词再次切分,适合搜索引擎分词
2.安装
pip install jieba
3.英文分词
由于英文文本是通过空格或者标点进行分隔的,因此分词比较方便
#案例
import jieba
txts = "China is a beautiful country"
str = txts.split()
print(str)
4.中文分词
中文文本分词之所以比较困难,是因为中文句子内部缺少分隔符,使之不能直接进行分词
#基础案例
import jieba
txts = "中国是一个美丽的国家"
str = jieba.lcut(txts)
print(str)
jieba库常用分词函数
函数 | 描述 |
---|---|
cut(s) | 精确模式,返回一个可迭代的数据类型 |
cut(s,cut_all=True) | 全模式,输出文本s中所有可能的单词 |
cut_for_search(s) | 搜索引擎模式,适合搜索引擎建立索引的分词结果 |
lcut(s) | 精确模式,返回一个列表类型,建议使用 |
lcut(s,cut_all=True) | 全模式,返回一个列表类型,建议使用 |
lcut_for_search(s) | 搜索引擎模式,返回一个列表类型,建议使用 |
add_word(w) | 向分词词典中增加新词w |
对比案例:使用cut_all=True与不使用cut_all=True的区别
##使用cut_all=True
import jieba
txts = "中华人民共和国是一个伟大而美丽的国家"
str = jieba.lcut(txts,cut_all=True)
print(str)
##不使用cut_all=True
import jieba
txts = "中华人民共和国是一个伟大而美丽的国家"
str = jieba.lcut(txts)
print(str)
使用cut_all=True结果
不使用cut_all=True结果
总结
jieba.lcut():返回精确模式,输出的分词刚好能够且不多余地组成原始文本
jieba.lcut(s,True):返回全模式,输出原始文本中,可能产生的所有词组,重复性最大
jieba.lcut_search():返回搜索引擎模式,首先执行精确模式,然后在对其中的长词进一步切分以获得结果。
案例一:英语词频统计案例
import jieba
#1.创建一个读取文件的函数findText()
def findText():
# 读取文本
txt = open("txt.txt", "r", encoding='utf-8').read()
# 将文本中的英文全部变成小写
txt = txt.lower()
# 将英文中的符号全部变成空格
for c in '!"#$%&()*+,-./;:<=>?@[\\]\'_{|}~':
txt = txt.replace(c, " ")
return txt
#2.创建findText()对象
Txts = findText()
#3.切割英语文本
words = Txts.split()
#4.创建一个counts集合,统计每个单词出现的次数
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
#5.将counts进行格式转换,变成[("is",1)]格式,外面是列表,里面是元祖
items = list(counts.items())
#6.将items根据单词出现的个数进行排序,从高到低
items.sort(key=lambda x: x[1], reverse=True)
#7.获取前10个最高的单词
for i in range(10):
word, count = items[i]
print("{0:<12}{1:>4}".format(word, count))
案例二:中文词频统计案例
import jieba
#1.读取中文txt文件
txt = open("txt.txt", "r", encoding='utf-8').read()
#2.对该文件进行切词
words = jieba.lcut(txt)
#3.创建counts集合,来保存切分后的词语
counts={}
#4.进行词频统计
for word in words:
if len(word) ==1:
continue
else:
counts[word]=counts.get(word,0)+1
#5.对切分后的词频,进行格式转换,转换成外面是列表,里面是元祖的形式,并且根据词频的大小,进行排序
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
#6.取出前10个最大的词语
for i in range(10):
word,count = items[i]
print("{0:<10}{1:>5}".format(word.count()))
标签:jieba,cut,word,入门,快速,txt,True,分词
From: https://www.cnblogs.com/gqboke/p/17083836.html