分词函数python 分词百度百科

1. jieba中文处理

jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。既然Jieba是以分词起家,我们自然要首先学习Jieba的中文分词功能。Jieba提供了三种分词模式:

成都创新互联专业为企业提供民乐网站建设、民乐做网站、民乐网站设计、民乐网站制作等企业网站建设、网页设计与制作、民乐企业网站模板建站服务,十年民乐做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

在jieba分词中,最常用的分词函数有两个,分别是 cut 和 cut_for_search ,分别对应于“精确模式/全模式”和“搜索引擎模式”。

当然,两者的输入参数也不一样,cut函数的输入主要有三个,分别是:

cut_for_search 函数主要有两个参数:

需要注意的是, cut 和 cut_for_search 返回的都是generator,如果想直接返回列表,需要使用 lcut 和 lcut_for_search

如果在一些特定场景中,需要使用一些特殊词汇进行分词,就需要加载自定义的分词词典:

其中,用户字典的格式为:

每一行表示一个单词,每行最多由三部分组成

如果只是少量词汇,可以使用

需要注意的是,如果没有给出词频和词性信息,在后续的处理中可能会造成一定的影响。

jieba提供了两种关键词提取算法,分别是TF-IDF以及TextRank

关于TF-IDF的原理,可以参考吴军老师的《数学之美》,里面给出了很详细的说明。本文只介绍利用TF-IDF算法提取关键词。

其中:

TextRank的用法与extract_tags的函数定义完全一致

词性标注主要是在分词的基础上,对词的词性进行判别,在jieba中可以使用如下方式进行:

在jieba中采用将目标文档按行分割,对每一行采用一个Python进程进行分词处理,然后将结果归并到一起(有点类似于MapReduce)。据说目前尚不支持Windows,仅支持Linux和MacOS。

启动并行分词使用如下命令:

关闭并行分词使用如下命令:

使用tokenize函数后,会获得一个词语信息的元组,元组中的第一个元素是分词得到的结果,第二个元素是词的起始位置,第三个元素是词的终止位置。

除了本文介绍的jieba分词工具包以外,还有很多好用的中文分词工具,比如

jieba分词(R vs. python)

自然语言处理(NLP)是机器学习重要分支之一,主要应用于篇章理解、文本摘要、情感分析、知识图谱、文本翻译等领域。而NLP应用首先是对文本进行分词,当前中文分词器有Ansj、paoding、盘古分词等多种,而最基础的分词器应该属于jieba分词器(比较见下图)。

下面将分别应用R和python对jieba分词器在中文分词、词性标注和关键词提取领域的应用进行比较。

R实现

通过函数worker()来初始化分词引擎,使用segment()进行分词。有四种分词模式:最大概率法(MP)、隐马尔科夫模型(HMM)、混合模型(Mix)及索引模型(query),默认为混合模型。具体可查看help(worker).

#install.packages('jiebaR')library(jiebaR)mixseg - worker()segment( "这是一段测试文本" , mixseg ) #或者用以下操作mixseg['这是一段测试文本']mixseg = "这是一段测试文本"

python实现

python中需安装jieba库,运用jieba.cut实现分词。cut_all参数为分词类型,默认为精确模式。

import jiebaseg_list = jieba.cut(u"这是一段测试文本",cut_all = False)print("Full mode: "+ ",".join(seg_list))  #默认精确模式

无论是R还是python都为utf—8编码。

R实现

可以使用=.tagger 或者tag 来进行分词和词性标注,词性标注使用混合模型模型分词,标注采用和 ictclas 兼容的标记法。

words = "我爱北京天安门"tagger = worker("tag") #开启词性标注启发器tagger = words    #    r        v      ns      ns    # "我"    "爱"  "北京" "天安门"

python实现

#词性标注import jieba.posseg as psegwords = pseg.cut("我爱北京天安门")for word,flag in words:    print('%s, %s' %(word,flag))

R实现

R关键词提取使用逆向文件频率(IDF)文本语料库,通过worker参数“keywords”开启关键词提取启发器,topn参数为关键词的个数。

keys = worker("keywords",topn = 5, idf = IDFPATH)keys = "会议邀请到美国密歇根大学(University of Michigan, Ann Arbor)环境健康科学系副教授奚传武博士作题为“Multibarrier approach for safe drinking waterin the US : Why it failed in Flint”的学术讲座,介绍美国密歇根Flint市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。"#结果:#        48.8677        23.4784        22.1402        20.326        18.5354 #      "饮用水"        "Flint"        "卫生"      "水污染"        "生活"

python实现

python实现关键词提取可运用TF-IDF方法和TextRank方法。allowPOS参数为限定范围词性类型。

#关键词提取import jieba.analysecontent = u'会议邀请到美国密歇根大学(University of Michigan, Ann Arbor)环境健康科学系副教授奚传武博士作题为“Multibarrier approach for safe drinking waterin the US : Why it failed in Flint”的学术讲座,介绍美国密歇根Flint市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。'#基于TF-IDFkeywords = jieba.analyse.extract_tags(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords:        print item[0],item[1]  #基于TF-IDF结果# 饮用水 0.448327672795# Flint 0.219353532163# 卫生 0.203120821773# 水污染 0.186477211628# 生活 0.170049997544

#基于TextRankkeywords = jieba.analyse.textrank(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords:        print item[0],item[1]    #基于TextRank结果:# 饮用水 1.0# 美国 0.570564785973# 奚传武 0.510738424509# 单位 0.472841889334# 讲座 0.443770732053

写在文后

自然语言处理(NLP)在数据分析领域有其特殊的应用,在R中除了jiebaR包,中文分词Rwordseg包也非常常用。一般的文本挖掘步骤包括:文本获取(主要用网络爬取)——文本处理(分词、词性标注、删除停用词等)——文本分析(主题模型、情感分析)——分析可视化(词云、知识图谱等)。本文是自然语言处理的第一篇,后续将分别总结下应用深度学习Word2vec进行词嵌入以及主题模型、情感分析的常用NLP方法。

参考资料

Introduction · jiebaR 中文分词

知乎:【文本分析】利用jiebaR进行中文分词

雪晴数据网:全栈数据工程师养成攻略

搜狗实验室,词性标注应用

【R文本挖掘】中文分词Rwordseg

如何用PYTHON做分词处理

可以利用python的jieba分词,得到文本中出现次数较多的词。

首先pip安装一下jieba,这个可以分词

然后用计数器Counter()统计一下得到的分词中各词的数量

最后most_common(5),是打印出排名前五位的词(包括特殊符号)

#encoding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

import jieba

from collections import Counter

str1 = open('tips.txt').read()

wordlist_after_jieba = jieba.cut(str1, cut_all = True)

list_wl = Counter(wordlist_after_jieba)

for i in list_wl.most_common(5):

print i[0],i[1]

如何利用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() 函数就可以了)。

jieba库的使用

/jieba库是python中一个重要的第三方中文分词函数库.(这名字起的,我给作者满分)

/jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过 图结构 和 动态规划 方法找到最大的概率的词组.除了分词,jieba还提供了自定义中文单词的功能.(并不知道划线的两种方法是什么......)

/jieba库支持3种分词模式:

精确模式:将句子最精确的切开,适合文本分析. 

全模式:把句子中所有可以成词的词语都扫描出来,速度快,但不能消除歧义. 

搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词. 

/jieba库常用的分词函数:

1. jieba.cut(s) :精确模式,返回一个可迭代的数据类型.

2. jieba.cut(s,cut_all=True) :全模式,输出文本s中所有可能的单词.

3. jieba.cut_for_search(s) :搜索引擎模式,适合搜索引擎建立索引的分词结果.

4. jieba.lcut(s) :精确模式,返回一个列表类型(建议使用).

5. jieba.lcut(s,cut_all=True) :全模式,返回一个列表类型(建议使用).

6. jieba.lcut_for_search(s) :搜索引擎模式,返回一个列表类型(建议使用).

7. jierba.add_word(w) :向分词词典中增加新词w.


分享文章:分词函数python 分词百度百科
分享网址:http://myzitong.com/article/hpioie.html