zoukankan      html  css  js  c++  java
  • python库之jieba小试牛刀

    1 安装

     代码对 Python 2/3 均兼容

    • 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba
    • 半自动安装:先下载 https://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install
    • 手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录
    • 通过 import jieba 来引用

    2 特点

    • 支持三种分词模式:
      • 精确模式,试图将句子最精确地切开,适合文本分析;
      • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
      • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
    • 支持繁体分词
    • 支持自定义词典
    • MIT 授权协议

    3 示例

    1 基本用法

    # encoding=utf-8
    import jieba 
    words = jieba.cut("我今天去国家科学技术馆参观")
    print("/".join(words))
    

     结果: 我/今天/去/国家/科学技术/馆/参观

    2 添加字典

    # encoding=utf-8
    import jieba
    jieba.load_userdict("dict.txt")
    words = jieba.cut("我今天去国家科学技术馆参观")
    print("/".join(words))
    

     结果: 我/今天/去/国家科学技术馆/参观

    dict.txt

    国家科学技术馆 100 n

    自定义的词典一行上面有三列,第二个是指出现的次数,第三个是词性

    3 动态修改词频字典

    # encoding=utf-8
    import jieba 
    words = jieba.cut("我今天去国家科学技术馆参观", HMM=False)
    jieba.suggest_freq(('国家科学技术馆'), True)
    print("/".join(words))
    

     结果: 我/今天/去/国家科学技术馆/参观

    使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其(或不能)被分出来。
    注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。

    4 三种模式的分词

    # encoding=utf-8
    import jieba 
    
    seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
    print("Full Mode: " + "/ ".join(seg_list))  # 全模式
     
    seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
    print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
     
    seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
    print(", ".join(seg_list))
     
    seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
    print(", ".join(seg_list))
    

     结果:

    Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
    Default Mode: 我/ 来到/ 北京/ 清华大学
    他, 来到, 了, 网易, 杭研, 大厦
    小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造、

    5 词性标注

    # encoding=utf-8
    import jieba
    import jieba.posseg as pseg
    words = pseg.cut("我爱祖国大好河山")
    pseg.jieba.suggest_freq(('爱', '祖国'), True)
    for word, flag in words:
        print('%s %s' % (word, flag))
    

     结果:

    我 r
    爱 v
    祖国 n
    大好河山 i

    6 Tokenize:返回词语在原文的起止位置

    • 注意,输入参数只接受 unicode

       默认模式

    # encoding=utf-8
    import jieba
    import jieba.posseg as pseg
    result = jieba.tokenize("如意进出口贸易有限公司")
    for tk in result:
        print("word %s 		 start: %d 		 end: %d" % (tk[0], tk[1], tk[2]))
    

     结果:

    word 如意             start: 0          end: 2
    word 进出口          start: 2          end: 5
    word 贸易              start: 5          end: 7
    word 有限公司       start: 7          end: 11

     搜索模式

    # encoding=utf-8
    import jieba
    import jieba.posseg as pseg
    result = jieba.tokenize("如意进出口贸易有限公司", mode='search')
    for tk in result:
        print("word %s 		 start: %d 		 end: %d" % (tk[0], tk[1], tk[2]))
    

     结果:
    word 如意          start: 0          end: 2
    word 进出          start: 2          end: 4
    word 出口          start: 3          end: 5
    word 进出口      start: 2          end: 5
    word 贸易          start: 5          end: 7
    word 有限          start: 7          end: 9
    word 公司          start: 9          end: 11
    word 有限公司   start: 7          end: 11

  • 相关阅读:
    SQL Server 【应用】行列转换Pivot&Unpivot
    SQL Server 【优化】in & exists & not in & not exists
    SQL Server 【提高】 死锁
    SQL Server 【提高】 锁
    SQL Server 【提高】 游标
    .Net 【基础回顾】关键字
    .Net 【基础回顾】值类型与引用类型
    mysql中point类型数据的操作
    CGI环境配置(Ubuntu)
    CGI环境配置(CentOS)
  • 原文地址:https://www.cnblogs.com/xzlq/p/8406517.html
Copyright © 2011-2022 走看看