美文网首页
Python中文分词工具:Jieba的基本使用

Python中文分词工具:Jieba的基本使用

作者: 大数据学苑 | 来源:发表于2018-08-18 18:20 被阅读215次

    今日分享:Jieba中文分词基础入门

    近年来,随着NLP自然语言处理技术的日益成熟,开源实现的分词工具也越来越多,比如NLTK:其在英文分词较为成熟,分词效果较好,在处理中文分词方面则显得力不足;在处理中文分词时,Jieba这一工具普遍为大家所接受,很多企业也都是利用这一工具来处理涉及中文分词的项目;其他的开源分词工具比如Ansj、盘古分词等,感兴趣的小伙伴可以去搜索一下,本文章重点介绍Jieba分词工具。

    使用Jieba分词工具主要基于以下几点:

    1、社区活跃。GitHub上Jieba社区活跃度高,表明该项目会一直得到维护并持续更新,适合长期使用。

    2、功能丰富。其不仅可以进行分词处理,还可以进行词性标注,关键词提取等。

    3、使用简单。基于Python语言来说,其配置非常简单,方便上手。

    Jieba分词工具的安装

    作为Python的第三方库,和其他库的安装方式一样,打开cmd命令窗口,执行以下命令,等待一段时间即可完成安装:

    pip install jieba

    Jieba分词结合了基于规则和基于统计这两类方法:

    1、规则分词:

    基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不予切分。

    按照匹配切分的方式,主要有正向匹配法、逆向最大匹配法以及双向最大匹配法。

    2、统计分词:

    其主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。

    Jieba分词是基于以上两种方法,也就是混合分词。先基于词典的方式进行分词,然后再用统计分词方法进行辅助,这样的话既能保证词典分词的准确率,又能做到对未登录词和歧义词有较好的识别。

    Jieba的三种分词模式

    import jieba

    #语料demo
    sent = '中文分词是文本处理不可或缺的一步!'

    seg_list = jieba.cut(sent, cut_all=True)
    #'/'用来词与词之间的间隔,也可以用别的符号来间隔
    print('全模式:', '/ ' .join(seg_list))
    #该模式下将所有可能为词的状况进行穷举
    全模式: 中文/ 分词/ 是/ 文本/ 文本处理/ 本处/ 处理/ 不可/ 不可或缺/ 或缺/ 的/ 一步/ !

    seg_list = jieba.cut(sent, cut_all=False)
    print('精确模式:', '/ '.join(seg_list))
    精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !

    seg_list = jieba.cut(sent)  
    print('默认精确模式:', '/ '.join(seg_list))
    默认精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !

    seg_list = jieba.cut_for_search(sent)  
    print('搜索引擎模式:', '/ '.join(seg_list))
    #和全模式下的返回结果类似
    搜索引擎模式: 中文/ 分词/ 是/ 文本/ 本处/ 处理/ 文本处理/ 不可/ 或缺/ 不可或缺/ 的/ 一步/ !

    # 方法lcut返回的是一个分割后的词列表,在实际项目中多采用该方法进行切词,返回的列表便于后续的处理。
    seg_list = jieba.lcut(sent)
    print(seg_list)
    ['中文', '分词', '是', '文本处理', '不可或缺', '的', '一步', '!']

    JIeba词性标注分词

    #带词性分词
    import jieba.posseg as psg

    sent = '我爱北京天安门,天安门上太阳升'

    seg_list = psg.cut(sent)
    result = []
    for w in seg_list:
    #     print(w)
    #     print(w.word) #词
    #     print(w.flag) #词性
       result.append(w)
    print(result)

    [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns'),
    pair(',', 'x'), pair('天安门', 'ns'), pair('上', 'f'), pair('太阳升', 'nr')]

    #词性说明:
    r:代词  v:动词  ns:地名   n:名词   x:非语素词   f:方位词  nr:人名

    #按照词性来看:最后一个词太阳升的词性nr(人名)有点不合逻辑

    免费分享干货部分截图

    关注公众号即可一键领取

    省去找资料的麻烦     为您的进阶学习保驾护航

    公众号     QQ群

    扫QQ群二维码进交流学习群

    或在后台回复:加群

    相关文章

      网友评论

          本文标题:Python中文分词工具:Jieba的基本使用

          本文链接:https://www.haomeiwen.com/subject/aagfiftx.html