如何利用Python对中文进行分词处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用Python对中文进行分词处理相关的知识,希望对你有一定的参考价值。

python做中文分词处理主要有以下几种:结巴分词、NLTK、THULAC
1、fxsjy/jieba
结巴的标语是:做最好的 Python 中文分词组件,或许从现在来看它没做到最好,但是已经做到了使用的人最多。结巴分词网上的学习资料和使用案例比较多,上手相对比较轻松,速度也比较快。
结巴的优点:
支持三种分词模式
支持繁体分词
支持自定义词典
MIT 授权协议

2、THULAC:一个高效的中文词法分析工具包
前两天我在做有关于共享单车的用户反馈分类,使用jieba分词一直太过零散,分类分不好。后来江兄给我推荐了THULAC: 由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包 。THULAC的接口文档很详细,简单易上手。
THULAC分词的优点:
能力强。利用规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
准确率高。该工具包在标准数据集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() 函数就可以了)。
参考技术A 直接百度:python 结巴分词

python中文分词,使用结巴分词对python进行分词

在采集美女站时,需要对关键词进行分词,最终采用的是python的结巴分词方法.

中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词。其基本实现原理有三点:

  1. 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)

  2. 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合

  3. 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法

安装(Linux环境)

下载工具包,解压后进入目录下,运行:python setup.py install

 

模式

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

  2. 全模式,把句子中所有的可以成词的词语都扫描出来,适合搜索引擎

 

接口

  • 组件只提供jieba.cut 方法用于分词

  • cut方法接受两个输入参数:

    •   第一个参数为需要分词的字符串

    •   cut_all参数用来控制分词模式

  • 待分词的字符串可以是gbk字符串、utf-8字符串或者unicode

  • jieba.cut返回的结构是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list  

  • seg=jieba.cut("http://www.gg4493.cn/"):

技术分享图片

 

实例

技术分享图片

Hljs gradle代码 技术分享图片

  1. <span style="margin: 0px; padding: 0px;">#! -*- coding:utf-<span class="hljs-number" style="margin: 0px; padding: 0px; color: rgb(0, 102, 102);">8</span> -*-  

  2. <span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">import</span> jieba  

  3. seg_list = jieba.cut(<span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"我来到北京清华大学"</span>, cut_all = <span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">True</span>)  

  4. <span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">print</span> <span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"Full Mode:"</span>, <span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">‘ ‘</span>.<span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">join</span>(seg_list)  

  5.   

  6. seg_list = jieba.cut(<span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"我来到北京清华大学"</span>)  

  7. <span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">print</span> <span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"Default Mode:"</span>, <span class="hljs-string" style="margin: 0px; padding: 0px; color: rgb(0, 136, 0);">‘ ‘</span>.<span class="hljs-keyword" style="margin: 0px; padding: 0px; color: rgb(0, 0, 136);">join</span>(seg_list)</span>


以上是关于如何利用Python对中文进行分词处理的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Python 中的 NLTK 对中文进行分析和处理

结巴分词

金融领域中文分词最强王者

python中文分词+词频统计

jieba分词(R vs. python)

Python 自然语言处理