中文文本分类不像英文文本分类一样只需要将单词一个个分开就可以了,中文文本分类需要将文字组成的词语分出来构成一个个向量。所以,需要分词。
这里使用网上流行的开源分词工具结巴分词(jieba),它可以有效的将句子里的词语一个个的提取出来,关于结巴分词的原理此处不再赘述,关键是他的使用方法。
1、安装
结巴分词是一个Python的工具函数库,在python环境下安装,安装方式如下:
(1)python2.x下
全自动安装 :easy_install jieba 或者 pip install jieba
半自动安装 :先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install
手动安装 :将jieba目录放置于当前目录或者site-packages目录
通过import jieba 来引用
(2)python3.x下
目前master分支是只支持Python2.x 的
Python3.x 版本的分支也已经基本可用: https://github.com/fxsjy/jieba/tree/jieba3k

git clone https://github.com/fxsjy/jieba.git
git checkout jieba3k
python setup.py install

2、使用
在使用它的时候首先要用import jieba代码导入jieba库,而由于中文文本中可能除了文本内容以外还有一些符号比如括号、等号或箭头等,还需要将这些通过正则表达式的方式匹配出来并删除,
由于使用到了正则表达式,所以还需要使用import re来导入相关函数库。
具体代码如下:

def textParse(sentence):
    import jieba
    import re
    #以下两行过滤出中文及字符串以外的其他符号
    r= re.compile("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+")
    sentence=r.sub('',sentence)
    seg_list = jieba.cut(sentence)
    #print ("Default Mode:", ' '.join(seg_list))
    return [tok for tok in seg_list]

textParse函数接收一个句子(sentence)做为参数,返回结果是一个由句子词语构成的数组。
结巴分词中最关键的函数为jieba.cut该函数将接收到的句子分割成一个个词语并返回一个可供迭代的generator。代码的最后一行将这个结构转化为数组。

3、停用词
停用词是指一些中文中出现的语气词或连接词,这些词如果不进行踢出,会影响核心词与分类的明确关系。比如“的”,“之”,“与”,“和”等,也可以视情况增加适合本分类场景的停用词。中文停用词表涵盖了1598个停用词。可以从github上获取。
项目改进如下:
(1)在项目中新建停用词表stopkey.txt
将所有中文停用词进该文本文件中。
(2)中文分词时加入过滤停用词功能

4、自定义词典
针对分类场景,自定义一些常用词,当分词的时候遇到这些词就把他们作为单个词处理。如增加数据库中“多对多”到词典中可以避免分词的时候将上述词语分为“多”“对”“多”。这些词典的定义也与分类器应用场景有关。
项目改进如下:
(1)加入自定义词典文件userdict.txt
(2)中文分词中加入自定义词典分词功能

5、改进后的中文分词函数
代码如下(同时又增加了其它常见符号):

#中文分词
def textParse(sentence):
    import jieba
    import re
    
    #以下两行过滤出中文及字符串以外的其他符号
    r= re.compile("[\s+\.\!\/_\?【】\-(?:\))(?:\()(?:\[)(?:\])(\:):,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+")
    
    sentence=r.sub('',sentence)
    jieba.load_userdict("userdict.txt");#加载自定义词典
    stoplist={}.fromkeys([line.strip() for line in open("stopkey.txt",'r',encoding= 'utf-8')])#停用词文件是utf8编码  
    seg_list = jieba.cut(sentence)
    seg_list=[word for word in list(seg_list) if word not in stoplist]
    #print ("Default Mode:", ' '.join(seg_list))
    return seg_list
来源:顶求网

结巴(jieba)中文分词及其应用实践的更多相关文章

  1. jieba中文分词

      jieba中文分词¶   中文与拉丁语言不同,不是以空格分开每个有意义的词,在我们处理自然语言处理的时候,大部分情况下,词汇是对句子和文章的理解基础.因此需要一个工具去把完整的中文分解成词. ji ...

  2. python安装Jieba中文分词组件并测试

    python安装Jieba中文分词组件 1.下载http://pypi.python.org/pypi/jieba/ 2.解压到解压到python目录下: 3.“win+R”进入cmd:依次输入如下代 ...

  3. 模块 jieba结巴分词库 中文分词

    jieba结巴分词库 jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结. 安装jieba pip install jieba 简单用法 结巴分词分为三种模式:精确 ...

  4. jieba中文分词的.NET版本:jieba.NET

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

  5. jieba中文分词(python)

    问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...

  6. .net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

  7. Python分词模块推荐:jieba中文分词

    一.结巴中文分词采用的算法 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合对于未登录词,采 ...

  8. NLP自然语言处理 jieba中文分词,关键词提取,词性标注,并行分词,起止位置,文本挖掘,NLP WordEmbedding的概念和实现

    1. NLP 走近自然语言处理 概念 Natural Language Processing/Understanding,自然语言处理/理解 日常对话.办公写作.上网浏览 希望机器能像人一样去理解,以 ...

  9. (转)jieba中文分词的.NET版本:jieba.NET

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

随机推荐

  1. javaWeb学习总结(10)- Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 web资源:例如Jsp, Servlet, 静 ...

  2. java加密解密研究6、MD算法家族

    一.简述 MD5算法是典型的消息摘要算法,其前身有MD2.MD3和MD4算法,它由MD4.MD3和MD2算法改进而来.不论是哪一种MD算法,它们都需 要获得一个随机长度的信息并产生一个123位的信息摘 ...

  3. UNIX文件I/O

    第一次用markdown语法写博客,写出来的还比较整齐,感觉博客园对序号的支持不是很好,调了一会才有了比较满意的效果,还有有哪位知道使用markdown如何插入frame? 这边博客主要说了APUE中 ...

  4. 每天一道Java题[10]

    题目 阐述创建线程最常用的两种方法及其对比. 解答 方法一:继承Thread类实现 步骤: 创建Thread类的子类,如MyThread. 重写Thread类的run()方法. 实例化MyThread ...

  5. 六一儿童节PHP宝宝又被围剿了,迅速围观!

    原文链接 据说这是2020年某国际多语言幼儿园的官方讨论会现场外泄图片,程序员宝宝们,你们同意会议结果吗? 据说这是2020年某国际多语言幼儿园的官方讨论会现场外泄图片,程序员宝宝们,你们同意会议结果 ...

  6. idea的一揽子工程

    我总觉得,世上如果人人都像我一样,那路该多难走.有时候在网上找到一些问题的答案,成功解决之后,就这么过去了,实在罪过. 将idea的几个常见的使用问题综合到一起吧,如果有不会用的,欢迎留言.当然,请支 ...

  7. 对 dotweb 框架进行统一的自定义错误处理

    助移动端的增长,如今 RESTful 风格的 API 已经十分流行, 用各种语言去写后端 API 都有很成熟方便的方案,用 golang 写后端 API 更是生产力的代表, 你可以用不输 python ...

  8. XOR 加密简介

    本文介绍一种简单高效.非常安全的加密方法:XOR 加密. 一. XOR 运算 逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算". 它的定义是:两个 ...

  9. SurfaceView的基本使用

    一.引入: Android提供了View来进行绘图处理,在大部分情况下,View都能满足绘图需求.大家都知道View是通过刷新来重绘视图,Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新 ...

  10. sublime text 快捷收集

    1. 文件快速导航: 这是sublime上面很好用的功能之一,ctrl+p可以调出窗口,菜单上的解释是gotoanythings ,确实如其所言,调出窗口后,直接输入关键字,可以在已打开的项目文件夹中 ...