【NLP】之 结巴分词

大家好,又见面了,我是你们的朋友风君子。

1.结巴分词简介

结巴分词是当前效果较好的一种中文分词器,支持中文简体、中文繁体分词,同时还支持自定义词库。

结巴分词支持三种分词模式:精确模式、全模式和搜索引擎模式。

  • 精确模式是试图将句子最精确的进行切分,适合用于文本分析;
  • 全模式的原理是把句子中全部可以成词的词语全部扫描出来,它的分词速度快,缺点是无法识别歧义词句;
  • 搜索引擎模式是在精确模式的基础上进一步处理的,它对较长的词语再进行分割,将召回率提高,适合于搜索引擎分词。

结巴分词自带一个词典,内含20000多条词,及词条出现的次数与词性。结巴分词用到的算法有基于Trie树的词图遍历,会生成一个DAG图,该图是由句子中所有汉字的所有可能组合决定,采用动态规划(DP)查找概率最大的路径,从而找出基于词频的最大切分组合,而对于结巴分词词典中未记录的词,其使用了基于汉字成词能力的HMM模型,以及Viterbi算法。

python结巴分词安装

pip install jieba

2.分词实现

结巴分词有三种模式,具体内容在上文已有介绍。本系统分词采用的是精确模式,使用的是基于Python的jieba模块来实现。

停用词(Stop Words)是指在信息检索中,在自然语言处理之前或之后被自动过滤的字或词,目的是为了节省内存空间并提高搜索效率。停用词表是人工构造的,本系统使用的是哈工大停用词表。

哈工大停用词下载链接:https://github.com/goto456/stopwords

结巴分词及去停用词核心代码如下:

import jieba

#分词
def stripdataTest):
    # jieba 默认启用了HMM(隐马尔科夫模型)进行中文分词
    seg_list = jieba.cutTest)  # 分词

    #获取字典,去除停用词
    line = "/".joinseg_list)
    word = stripwordline)
    #printline)
    #列出关键字
    print"\n关键字:\n"+word)

#停用词分析
def stripwordseg):
    #打开写入关键词的文件
    keyword = open'key_word.txt', 'w+', encoding='utf-8')
    print"去停用词:\n")
    wordlist = []

    #获取停用词表
    stop = open'stopword.txt', 'r+', encoding='utf-8')
    stopword = stop.read).split"\n")

    #遍历分词表
    for key in seg.split'/'):
        #printkey)
        #去除停用词,去除单字,去除重复词
        if notkey.strip) in stopword) and lenkey.strip)) > 1) and notkey.strip) in wordlist) :
            wordlist.appendkey)
            printkey)
            keyword.writekey+"\n")

    #停用词去除END
    stop.close)
    keyword.close)
    return '/'.joinwordlist)

def creat):
    Rawdata = open'raw.txt','r+')
    text = Rawdata.read)
    #调用分词
    stripdatatext)
    #END
    Rawdata.close)

if __name__ == '__main__' :
    creat)

分词效果

【NLP】之 结巴分词

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注