中文自然语言处理——jieba中文分词器

jieba分词器

1.引入jieba库和语料

import jieba
content = '深度学习是机器学习的一个子集,传统机器学习中,人们需要对专业问题理解非常透彻,才能手工设计特征,然后把特征交给某个机器学习算法'

1)、精准分词:把句子最精确的分开

sens_1 = jieba.cut(content,cut_all=False)
print('/'.join(sens_1))

可以看到分词结果

深度/学习/是/机器/学习/的/一个/子集/,/传统/机器/学习/中/,/人们/需要/对/专业/问题/理解/非常/透彻/,/才能/手工/设计/特征/,/然后/把/特征/交给/某个/机器/学习/算法

2)、全模式分词:把句子中所有可能的单词都找出来

sens_2 = jieba.cut(content,cut_all=True)
print('/'.join(sens_2))

可以看到分词结果

深度/学习/是/机器/学习/的/一个/个子/子集/,/传统/机器/学习/中/,/人们/需要/对/专业/问题/理解/非常/透彻/,/才能/能手/手工/设计/特征/,/然后/把/特征/交给/某个/机器/学习/算法

3)、搜索引擎模式:在精准分词的基础上,对长词再次进行划分

content = '深度学习在大量数据可用时,才能有效地学习模型,才能从数据自身通过学习完成参数提取'
sens_3 = jieba.cut_for_search(content)
print('/'.join(sens_3))

可以看到分词结果

深度/学习/在/大量/数据/可用/时/,/才能/有效/地/学习/模型/,/才能/从/数据/自身/通过/学习/完成/参数/提取

4)、jieba.cut 和 jieba.cut_for_seatch 结果的封装
用jieba.lcut和 jieba.lcut_for_seatch函数输出的结果是一个列表
5)、可以使用jieba.posseg 模块实现词性标注

content = '很难想象哪一个大行业不会被人工智能改变,人工智能会在这个行业里发挥着重大作用'
import jieba.posseg as psg
print([(x.word,x.flag) for x in psg.lcut(content)])
[('很', 'd'), ('难', 'a'), ('想象', 'n'), ('哪', 'r'), ('一个', 'm'), ('大', 'a'), ('行业', 'n'), ('不会', 'v'), ('被', 'p'), ('人工智能', 'n'), ('改变', 'v'), (',', 'x'), ('人工智能', 'n'), ('会', 'v'), ('在', 'p'), ('这个', 'r'), ('行业', 'n'), ('里', 'f'), ('发挥', 'v'), ('着', 'uz'), ('重大', 'a'), ('作用', 'v')]

6)、获取分词结果列表中出现频率top—n
其中Counter().most_common(n),参数n是获得top几的

content = '人工智能的难题不仅是计算机科学问题,更是数学、认知科学和哲学问题'
sens_1 = jieba.lcut(content,cut_all=False)
print('/'.join(sens_1))

from collections import Counter
top2= Counter(sens_1).most_common(2)
print(top2)
[('问题', 2), (',', 2)]

7)、自定义添加词和字典

txt = "铁甲网是中国最大的工程机械交易平台。"
print(jieba.lcut(txt))
['铁甲', '网是', '中国', '最大', '的', '工程机械', '交易平台', '。']

可以看出jieba分词器是不能分出“铁甲网”这个新词的,所以需要把这个词添加到字典中

jieba.add_word('铁甲网')
print(jieba.lcut(txt))
['铁甲网', '是', '中国', '最大', '的', '工程机械', '交易平台', '。']

可以看出此时能正确分出铁甲网
当有多个词时,一个一个添加效率就不高了,所以可以采用这种方法

    jieba.load_userdict('user_dict.txt')
    print(jieba.lcut(txt))
上一篇:Linux处理海量数据cut命令


下一篇:绘图的基本元素(ggplot2实现)