NLP_jieba中文分词的常用模块

1.jieba分词模式

(1)精确模式: 把句子最精确的切分开, 比较适合文本分析. 默认精确模式.
(2)全模式: 把句子中所有可能成词的词都扫描出来, cut_all = True, 缺点: 速度快, 不能解决歧义
(3)paddle: 利用百度的paddlepaddle深度学习框架. 简单来说就是使用百度提供的分词模型. use_paddle=True.
(4)搜索引擎模式: 在精确模式的基础上, 对长词再进行切分, 提高召回率, jieba.cut_for_search

1.精确模式分词

import jieba


text = '我在北京大学上学'  #待分词的文本

cut_text_generator = jieba.cut(text)  # 注意精确模式返回的是生成器

next(cut_text_generator)  #显示分词结果方法一   (一个一个词显示)

#显示分词结果方法二:循环输出
for word in cut_text_generator:
    print(word)

#将分词结果转化为列表  进行输出
list(cut_text_generator)  #生成器放入列表中会直接转化为列表

#使用lcut分词, l=list 返回的就是列表
cuted_words = jieba.lcut(text)
print(cuted_words)

 分词列表输出结果:

['我', '在', '北京大学', '上学']

2.全模式分词 

text = '我在北京大学上学'  #待分词的文本

cuted_all_words = jieba.lcut(text, cut_all = True)
print(cuted_all_words)
输出结果:
['我', '在', '北京', '北京大学', '大学', '学上', '上学']

 3.搜索引擎模式分词

words_3 = jieba.lcut_for_search(text)
print(words_3)

 输出结果:

['我', '在', '北京', '大学', '北京大学', '上学']

 2.分词的同时进行词性标注¶

from jieba import posseg


words_4 = posseg.lcut(text)
print(words_4)
输出结果:
[pair('我', 'r'), pair('在', 'p'), pair('北京大学', 'nt'), pair('上学', 'n')]

3.加载自己定义的分词文件 

jieba.__path__  #查看结巴包路径

在jieba包的路径下,创建dict_2.txt文件,里面写入自定义的分词 

NLP_jieba中文分词的常用模块_第1张图片 

text1 = '大学教育倡导自主学习'   #待分词文本

words_5 = jieba.lcut(text)
print(words_5)


#若想把“大学教育”作为一个词进行划分,需要自定义分词文件,
#加载自定义分词文件(每次分词前需要重新加载)
jieba.load_userdict('D:/anaconda3/Lib/site-packages/jieba/dict_2.txt')

text1 = '大学教育倡导自主学习'
words_text1 = jieba.lcut(text1)
print(words_text1)

words_5输出结果:

['大学', '教育', '倡导', '自主', '学习']

words_text1输出结果:

['大学教育', '倡导', '自主', '学习']
 3.2增加一个临时分词的方法:
3.2.1jieba.add_word()
text2 = '好男人'
words_text2 = jieba.lcut(text2)
print(words_text2)


jieba.add_word('好男人')   #临时自定义一个分词
text3 = '好男人'
words_text3 = jieba.lcut(text3)
print(words_text3)

words_text2输出结果:

['好', '男人']

words_text3输出结果:

['好男人']
 3.2.2jieba.suggest_word()
#tune=True表示词可以被分出来
jieba.suggest_freq('三好小孩', tune=True)#可调节单个词语的词频,使其(或不能)被分出来
text4 = '三好小孩'
words_text4 = jieba.lcut(text4)
print(words_text4)
原本输出:['三好 ',' 小孩']
words_text4输出结果:
['三好小孩']

4. 关键词提取模块

from jieba import analyse  #关键词提取的模块


text5 = '山沟里的村子变美,村民们的生活更好了。家乡的点滴变化,都让生活在这里的人们感到骄傲。'

# 提取关键词, 是根据tfidf算出来的值
#topK=5 : 关键词的提取个数
#withWeight=True  : 显示关键词的权重
analyse.extract_tags(text5, topK=5, withWeight=True)


analyse.tfidf(text5, topK=5, withWeight=True)

输出结果:

[('变美', 0.8539119644928571),
 ('点滴', 0.6958424691871429),
 ('生活', 0.6619803475814285),
 ('山沟', 0.638917899597857),
 ('骄傲', 0.5833811696485715)]

 5.输出分词索引

words_generator = jieba.tokenize(text5)  #一个生成器
print(words_generator)  


list(words_generator)  #注意,生成器只能输出一次数据,再次输出数据需要重新执行创建生成器的代码

 输出结果:

[('山沟', 0, 2),
 ('里', 2, 3),
 ('的', 3, 4),
 ('村子', 4, 6),
 ('变美', 6, 8),
 (',', 8, 9),
 ('村民', 9, 11),
 ('们', 11, 12),
 ('的', 12, 13),
 ('生活', 13, 15),
 ('更好', 15, 17),
 ('了', 17, 18),
 ('。', 18, 19),
 ('家乡', 19, 21),
 ('的', 21, 22),
 ('点滴', 22, 24),
 ('变化', 24, 26),
 (',', 26, 27),
 ('都', 27, 28),
 ('让', 28, 29),
 ('生活', 29, 31),
 ('在', 31, 32),
 ('这里', 32, 34),
 ('的', 34, 35),
 ('人们', 35, 37),
 ('感到', 37, 39),
 ('骄傲', 39, 41),
 ('。', 41, 42)]

你可能感兴趣的:(NLP_jieba的使用,自然语言处理,中文分词,人工智能,nlp)