python结巴分词函数 python 结巴分词( 二 )


准确率高 。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%
速度较快 。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字 。只进行分词速度达到1.3MB/s,速度比jieba慢
Python 解决中文编码问题基本可以用以下逻辑:
utf8(输入) —— unicode(处理) —— (输出)utf8
Python 里面处理的字符都是都是unicode 编码,因此解决编码问题的方法是把输入的文本(无论是什么编码)解码为(decode)unicode编码,然后输出时再编码(encode)成所需编码 。
由于处理的一般为txt 文档,所以最简单的方法,是把txt 文档另存为utf-8 编码,然后使用Python 处理的时候解码为unicode(sometexts.decode('utf8')),输出结果回txt 的时候再编码成utf8(直接用str() 函数就可以了) 。
jieba分词详解 “结巴”分词是一个Python 中文分词组件,参见
可以对中文文本进行 分词、词性标注、关键词抽取 等功能,并且支持自定义词典 。
本文包括以下内容:
1、jieba分词包的 安装
2、jieba分词的 使用教程
3、jieba分词的 工作原理与工作流程
4、jieba分词所涉及到的 HMM、TextRank、TF-IDF等算法介绍
可以直接使用pip来进行安装:
sudo pip install jieba
或者
sudo pip3 install jieba
关键词抽取有两种算法 , 基于TF-IDF和基于TextRank:
jieba分词有三种不同的分词模式: 精确模式、全模式和搜索引擎模式 :
对应的 , 函数前加l即是对应得到list结果的函数:
精确模式是最常用的分词方法,全模式会将句子中所有可能的词都列举出来,搜索引擎模式则适用于搜索引擎使用 。具体的差别可在下一节工作流程的分析中详述 。
在上述每个函数中,都有名为HMM的参数 。这一项表示是否在分词过程中利用HMM进行新词发现 。关于HMM , 本文附录中将简述相关知识 。
另外分词支持自定义字典 , 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略) , 用空格隔开,顺序不可颠倒 。
具体使用方法为:
关键词抽取的两个函数的完整参数为:
可以通过
来打开或关闭并行分词功能 。
个人感觉一般用不到,大文件分词需要手动实现多进程并行,句子分词也不至于用这个 。
jieba分词主要通过词典来进行分词及词性标注,两者使用了一个相同的词典 。正因如此,分词的结果优劣将很大程度上取决于词典,虽然使用了HMM来进行新词发现 。
jieba分词包整体的工作流程如下图所示:
下面将根据源码详细地分析各个模块的工作流程 。
在之后几节中,我们在 蓝色的方框 中示范了关键步骤的输出样例或词典文件的格式样例 。在本节中都采用类似的表示方式 。
jieba分词中,首先通过对照典生成句子的 有向无环图,再根据选择的模式不同 , 根据词典 寻找最短路径 后对句子进行截取或直接对句子进行截取 。对于未登陆词(不在词典中的词)使用 HMM 进行新词发现 。
词典的格式应为
word1 freq1 word_type1
word2 freq2 word_type2

其中自定义用户词典中词性word_type可以省略 。
词典在其他模块的流程中可能也会用到,为方便叙述,后续的流程图中将会省略词典的初始化部分 。
图b演示了搜索引擎模式的工作流程,它会在精确模式分词的基础上,将长词再次进行切分 。
在这里我们假定读者已经了解HMM相关知识,如果没有可先行阅读下一章内容中的HMM相关部分或者跳过本节 。

推荐阅读