自然语言处理基础技术工具篇之Jieba

作者: yuquanle | 来源:发表于2018-12-06 11:05 被阅读0次

    声明:转载请注明出处,谢谢:https://www.jianshu.com/p/25f65bc93038
    另外,更多实时更新的个人学习笔记分享,请关注:


    知乎https://www.zhihu.com/people/yuquanle/columns
    公众号:StudyForAI
    CSDN地址http://blog.csdn.net/m0_37306360


    没想到坚持学习以及写作总结已经超过半个月了,谢谢大家的关注、点赞、收藏~~

    前面谈了nlp的基础技术,我始终觉得,入门学习一件事情最好的方式就是实践,加之现在python如此好用,有越来越多的不错nlp的python库,所以接下来的一段时间里,让我们一起来感受一下这些不错的工具(代码我均使用jupyter编辑)

    先来罗列一波:jieba、hanlp、snownlp、Stanfordcorenlp、spacy、pyltp、nltk、Textblob等等…今天从jieba开始吧,let's begin~~

    希望能继续得到大家的指点、关注、点赞以及收藏哈哈哈

    Jieba简介

    “结巴”中文分词,做最好的 Python 中文分词组件。主要功能包括分词、词性标注、关键词抽取等。

    Github地址:https://github.com/fxsjy/jieba

    Jieba工具Demo

    安装:pip install jieba

    1.分词

    支持三种分词模式(默认是精确模式):

    精确模式,试图将句子最精确地切开,适合文本分析;

    全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

    搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

    import jieba
    segfull_list = jieba.cut("我爱自然语言处理技术!", cut_all=True)
    print("Full Mode: " + " ".join(segfull_list)) # 全模式

    segdef_list = jieba.cut("我爱自然语言处理技术!", cut_all=False)
    print("Default Mode: " + " ".join(segdef_list)) # 精确模式

    seg_search_list = jieba.cut_for_search("我爱自然语言处理技术!") # 搜索引擎模式
    print("Search Mode:" + " ".join(seg_search_list))
    Building prefix dict from the default dictionary ...
    Loading model from cache C:\Users\yuquanle\AppData\Local\Temp\jieba.cache
    Loading model cost 0.830 seconds.
    Prefix dict has been built succesfully.

    Full Mode: 我 爱 自然 自然语言 语言 处理 技术
    Default Mode: 我 爱 自然语言 处理 技术 !
    Search Mode:我 爱 自然 语言 自然语言 处理 技术 !

    2.基于TF-IDF算法关键词抽取

    参数:

    sentence:待分析文本;

    topK:返回几个 TF/IDF 权重最大的关键词,默认值为 20

    withWeight:是否一并返回关键词权重值,默认值为 False

    allowPOS:仅包括指定词性的词,默认值为空,即不筛选

    import jieba.analyse
    sentence = "我爱自然语言处理技术!"
    tags = jieba.analyse.extract_tags(sentence, withWeight=True, topK=2, allowPOS=())
    print(tags)
    [('自然语言', 3.4783139164), ('处理', 1.8036185524533332)]

    3.基于 TextRank 算法的关键词抽取

    参数:

    allowPOS:默认过滤词性

    jieba.analyse.textrank(sentence, topK=1, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

    ['技术']

    4.词性标注

    import jieba.posseg as pseg
    sentence = "我爱自然语言处理!"
    words = pseg.cut(sentence)
    for word, flag in words:
    print('%s %s' % (word, flag))

    我 r
    爱 v
    自然语言 l
    处理 v
    ! x

    5.分词(tokenize)

    result = jieba.tokenize(u'我爱自然语言处理')
    for tk in result:
    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

    word 我 start: 0 end:1
    word 爱 start: 1 end:2
    word 自然语言 start: 2 end:6
    word 处理 start: 6 end:8

    另外,代码我已经上传github:https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/JiebaDemo.ipynb

    更多个人笔记请关注:

    公众号:StudyForAI(小白人工智能入门学习)

    知乎专栏:https://www.zhihu.com/people/yuquanle/columns

    相关文章

      网友评论

        本文标题:自然语言处理基础技术工具篇之Jieba

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