【NLP】之 结巴分词

【NLP】之 结巴分词1.结巴分词简介结巴分词是当前效果较好的一种中文分词器,支持中文简体、中文繁体分词,同时还支持自定义词库。结巴分词支持三种分词模式:精确模式、全模式和搜索引擎模式。精确模式是试图将句子最精确的进行切分,适合用于文本分析; 全模式的原理是把句子中全部可以成词的词语全部扫描出来,它的分词速度快,缺点是无法识别歧义词句; 搜索引擎模式是在精确模式的基础上进一步处理的,它对较长的词语再进…

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

1.结巴分词简介

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

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

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

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

python结巴分词安装

pip install jieba

2.分词实现

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

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

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

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

import jieba

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

    #获取字典,去除停用词
    line = "/".join(seg_list)
    word = stripword(line)
    #print(line)
    #列出关键字
    print("\n关键字:\n"+word)

#停用词分析
def stripword(seg):
    #打开写入关键词的文件
    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('/'):
        #print(key)
        #去除停用词,去除单字,去除重复词
        if not(key.strip() in stopword) and (len(key.strip()) > 1) and not(key.strip() in wordlist) :
            wordlist.append(key)
            print(key)
            keyword.write(key+"\n")

    #停用词去除END
    stop.close()
    keyword.close()
    return '/'.join(wordlist)

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

if __name__ == '__main__' :
    creat()

分词效果

【NLP】之 结巴分词

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150001.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NVIDIA Jetson TX1介绍(一)

    NVIDIA Jetson TX1介绍(一)NVIDIAJetsonTX1概述NVIDIAJetsonTX1是计算机视觉系统的SoM(system-on-module)解决方案。它组合了最新的NVIDIAMaxwellGPU架构,其具有ARMCortex-A57MPCore(Quad-Core)CPU族,实现性能与电源功耗的最大优化,满足下一代产品的工业视觉计算的要求。JetsonTX1SoM设计满足低功耗环境…

    2022年6月16日
    97
  • JSP include 绝对路径[通俗易懂]

    JSP include 绝对路径[通俗易懂]

    2022年7月13日
    17
  • Json详解以及fastjson使用教程[通俗易懂]

    Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。在使用Java做Web开发时,不可避免的会遇到Json的使用。下面我们就简单讲一下Json的使用以及fastjson.jar包的使用。一:JSON形式与语法1.1:JSON对象我们先来看以下数据:{ "ID":1001, "name"…

    2022年4月10日
    178
  • es6模板字符串的好处有哪些_使用es6方式实现伪数组转数组

    es6模板字符串的好处有哪些_使用es6方式实现伪数组转数组vue项目中碰到需要在模板字符串中动态渲染数组中的每一项,发现v-for不能正常渲染,于是使用原生的js语法来完成。

    2022年8月21日
    9
  • Ubuntu 安装 gcc-4.9.3-64-gnu

    Ubuntu 安装 gcc-4.9.3-64-gnu可能每个人的环境不一样,所以安装的方法有些许差别。我参考了多个网络上的教程,在自己的ubuntu虚拟机中安装了gcc-4.9.3-64-gnu,记录一下自己的安装过程。虚拟机中默认安装了gcc-5.4.0,我要安装gcc-4.9.3一、下载地址:wgethttp://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.3/gcc-4.9.3.tar.bz2由于是用的虚拟机,配置不是很高,自己是windows下载完毕拷贝进虚拟机中。gcc-gn

    2022年7月24日
    16
  • navicat15.0.23激活码【中文破解版】2022.03.06

    (navicat15.0.23激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年4月2日
    284

发表回复

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

关注全栈程序员社区公众号