快速入门jieba库
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()))
本文作者:老酒学IT
本文链接:https://www.cnblogs.com/LaoJiuXueIt/p/17083836.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步