0
点赞
收藏
分享

微信扫一扫

Python第三方库jieba的用法

老牛走世界 2023-02-08 阅读 159

1、分词的作用:

词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节。

2、jieba的特性:

支持多种分词模式:精确模式、全模式、搜索引擎模式
支持中文繁体分词
支持用户自定义词典 jieba库的安装

pip install jieba       

3、jieba的使用:

  • 精确模式分词:试图将句子最精确地切开,适合文本分析。
import jieba
content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
jieba.cut(content, cut_all=False)  # cut_all默认为False ,<generator object Tokenizer.cut at 0x7f065c19e318>(将返回一个生成器对象)
# 若需直接返回列表内容, 使用jieba.lcut即可
print(jieba.lcut(content, cut_all=False))
# ['工信处', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']             
  • 全模式分词:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能消除歧义。
import jieba
content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
jieba.cut(content, cut_all=True)  # cut_all默认为False,<generator object Tokenizer.cut at 0x7f065c19e318> (将返回一个生成器对象)
# 若需直接返回列表内容, 使用jieba.lcut即可
print(jieba.lcut(content, cut_all=True))
#['工信处', '处女', '女干事', '干事', '每月', '月经', '经过', '下属', '科室', '都', '要', '亲口', '口交', '交代', '24', '口交', '交换', '交换机', '换机', '等', '技术', '技术性', '性器', '器件', '的', '安装', '安装工', '装工', '工作']              
  • 搜索引擎模式分词:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
import jieba
content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
jieba.cut_for_search(content) # <generator object Tokenizer.cut at 0x7f065c19e318> (将返回一个生成器对象)
# 若需直接返回列表内容, 使用jieba.lcut_for_search即可
print(jieba.lcut_for_search(content))
#['工信处', '干事', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换', '换机', '交换机', '等', '技术', '技术性', '器件', '的', '安装', '工作']
# 对'女干事', '交换机'等较长词汇都进行了再次分词.               
  • 中文繁体分词:针对繁体文本进行分词。
import jieba
content = "煩惱即是菩提,我暫且不提"
print(jieba.lcut(content)) # ['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']                

使用用户自定义词典:添加自定义词典后,jieba能够准确识别词典中出现的词汇,提升整体的识别准确率。词典格式: 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。词典样式如下,具体词性含义请参照附录: jieba词性对照表,将该词典存为userdict.txt, 方便之后加载使用。 image.png image.png 自定义词典userdict.txt:

云计算 5 n
李小福 2 nr
easy_install 3 eng
好用 300
韩玉赏鉴 3 nz
八一双鹿 3 nz           
import jieba
print(jieba.lcut("八一双鹿更名为八一南昌篮球队!"))
# 没有使用用户自定义词典前的结果:  ['八', '一双', '鹿', '更名', '为', '八一', '南昌', '篮球队', '!']

jieba.load_userdict("./userdict.txt")
print(jieba.lcut("八一双鹿更名为八一南昌篮球队!"))
# 使用了用户自定义词典后的结果: ['八一双鹿', '更名', '为', '八一', '南昌', '篮球队', '!']
jieba.add_word("南昌篮球队")
jieba.add_word("更名为")
print(jieba.lcut("八一双鹿更名为八一南昌篮球队!"))
# ['八一双鹿', '更名为', '八一', '南昌篮球队', '!']  
  • 利用jieba.analyse进行 关键词 提取 注意 函数是在使用默认的TF-IDF模型进行分析,运行程序可能会报错,是编码问题,我们这时需打开下载的txt文档,另存为,选择utf-8编码即可。
import jieba.analyse
text='安全、防止水合物和段塞生成的重要措施之一。因此,针对未来还上油田开发技术,我们预先开展了水深1500米管道式油气水分离器的概念设计。通过该研究,提出适合海洋环境的体积小、重量轻、分离效率高、便于操作和维护的新型油气水三相分离器,使其成为海洋深水油气田开'
jieba.analyse.set_stop_words('停用词表路径')
Key=jieba.analyse.extract_tags(text,topK=3)
print(Key) # ['分离器', '油气', '概念设计']
  • 获取词性jieba 可以很方便地获取中文词性,通过 jieba.posseg 模块实现词性标注。
import jieba.posseg as psg
print([(x.word,x.flag) for x in psg.lcut(content)])
# [('现如今', 't'), (',', 'x'), ('机器', 'n'), ('学习', 'v'), ('和', 'c'), ('深度', 'ns'), ('学习', 'v'), ('带动', 'v'), ('人工智能', 'n'), ('飞速', 'n'), ('的', 'uj'), ('发展', 'vn'), (',', 'x'), ('并', 'c'), ('在', 'p'), ('图片', 'n'), ('处理', 'v'), ('、', 'x'), ('语音', 'n'), ('识别', 'v'), ('领域', 'n'), ('取得', 'v'), ('巨大成功', 'nr'), ('。', 'x')]
举报

相关推荐

0 条评论