a第一类是基于字符串匹配,即扫描字符串,如果发现字符串的子串和词相同,就算匹配。
这类分词通常会加入一些启发式规则,比如“正向/反向最大匹配”, “长词优先” 等策略。
这类算法优点是速度块,都是O(n)时间复杂度,实现简单,效果尚可。
也有缺点,就是对歧义和未登录词处理不好。
b第二类是基于统计以及机器学习的分词方式
这类分词基于人工标注的词性和统计特征,对中文进行建模,即根据观测到的数据(标注好的语料)对模型参数进行估计,即训练。 在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。常见的序列标注模型有HMM和CRF。
这类分词算法能很好处理歧义和未登录词问题,效果比前一类效果好,但是需要大量的人工标注数据,以及较慢的分词速度。
自然语言处理(NLP)是机器学习重要分支之一,主要应用于篇章理解、文本摘要、情感分析、知识图谱、文本翻译等领域。而NLP应用首先是对文本进行分词,当前中文分词器有Ansj、paoding、盘古分词等多种,而最基础的分词器应该属于jieba分词器(比较见下图)。
下面将分别应用R和python对jieba分词器在中文分词、词性标注和关键词提取领域的应用进行比较。
R实现
通过函数worker()来初始化分词引擎,使用segment()进行分词。有四种分词模式:最大概率法(MP)、隐马尔科夫模型(HMM)、混合模型(Mix)及索引模型(query),默认为混合模型。具体可查看help(worker)
#installpackages('jiebaR')library(jiebaR)mixseg <- worker()segment( "这是一段测试文本" , mixseg ) #或者用以下 *** 作mixseg['这是一段测试文本']mixseg <= "这是一段测试文本"
python实现
python中需安装jieba库,运用jiebacut实现分词。cut_all参数为分词类型,默认为精确模式。
import jiebaseg_list = jiebacut(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 jiebaposseg as psegwords = psegcut("我爱北京天安门")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市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。"#结果:# 488677 234784 221402 20326 185354 # "饮用水" "Flint" "卫生" "水污染" "生活"
python实现
python实现关键词提取可运用TF-IDF方法和TextRank方法。allowPOS参数为限定范围词性类型。
#关键词提取import jiebaanalysecontent = u'会议邀请到美国密歇根大学(University of Michigan, Ann Arbor)环境健康科学系副教授奚传武博士作题为“Multibarrier approach for safe drinking waterin the US : Why it failed in Flint”的学术讲座,介绍美国密歇根Flint市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。'#基于TF-IDFkeywords = jiebaanalyseextract_tags(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords: print item[0],item[1] #基于TF-IDF结果# 饮用水 0448327672795# Flint 0219353532163# 卫生 0203120821773# 水污染 0186477211628# 生活 0170049997544
#基于TextRankkeywords = jiebaanalysetextrank(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords: print item[0],item[1] #基于TextRank结果:# 饮用水 10# 美国 0570564785973# 奚传武 0510738424509# 单位 0472841889334# 讲座 0443770732053
写在文后
自然语言处理(NLP)在数据分析领域有其特殊的应用,在R中除了jiebaR包,中文分词Rwordseg包也非常常用。一般的文本挖掘步骤包括:文本获取(主要用网络爬取)——文本处理(分词、词性标注、删除停用词等)——文本分析(主题模型、情感分析)——分析可视化(词云、知识图谱等)。本文是自然语言处理的第一篇,后续将分别总结下应用深度学习Word2vec进行词嵌入以及主题模型、情感分析的常用NLP方法。
参考资料
Introduction · jiebaR 中文分词 >
谁是卧底。“谁是卧底”是一个非常有趣,风靡全国的比拼语言表述能力、知识面与想象力的游戏。游戏规则:在场7个人中6个人拿到相同的一个词语,剩下的1个拿到与之相关的另一个词语。每人每轮只能说一句话描述自己拿到的词语(不能直接说出来那个词语),既不能让卧底发现,也要给同胞以暗示。每轮描述完毕,7人投票选出怀疑是卧底的那个人,得票数最多的人出局,两个人一样多的话,待定(就是保留)。若有卧底撑到剩下最后三人,则卧底获胜,反之,则大部队获胜。
在网站的链接架构及关键词的布局都与分词有很大的关系。平时跟百度接触的比较多,所以就以百度中文分词为例介绍下搜索引擎分词的方法。在了解百度的中文分词之前大家首先要了解什么是中文分词我们中文与英文不同,是由一个个汉字连接成的,因此分起来相对比较复杂。百度的中文分词是将一个汉语句子切分成一个个的单独的词,然后按照一定的规则重新组合成一个序列的过程,简称中文切词。分词对搜索引擎的帮助很大,可以帮助搜索引擎程序自动识别语句的含义,从而使搜索结果的匹配度达到最高,因此分词的质量也就直接影响了搜索结果的精确度。当前百度搜索引擎分词主要采用字典匹配和统计学这两种方法。字典匹配分词这种方法的就出事有一个词库量超大的词典,即分词索引库,在按照一定的规则将待分的词的字符串与词库中的词进行匹配,找到某个词语就表示匹配成功,这主要通过以下几种方式:最少切分(使每一句中切出的词数最小);正向最大匹配法(由左到右的方向);双向最大匹配法(进行由左到右、由右到左两次扫描);逆向最大匹配法(由右到左的方向)。一般情况下,搜索引擎会使用多种方式结合使用,这就为搜索引擎带来很大的困难,如歧义的处理,为了提高关键词匹配的精确率,搜索引擎会模拟人类对句子的理解,从而达到识别词语的效果。也就是在粉刺的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。这主要包括以下几个部分:总控部分、分词子系统、句法语义子系统。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。统计学分词虽然字典索引库解决了很多难题,但是着写还是远远不够的,搜索引擎还需要具有不断发现新词的能力,在通过计算词语相邻的概率在确定是不是一个单独的词语,因此了解的上下文越多,对句子的理解也就越准确,当然分词也就越精确。举个例子来讲就是搜索引擎优化的过程是什么在上下文中出现的次数较多,那么统计学分词就会将这个词假如分词索引库。对于seo的工作者,必须要掌握搜索引擎的粉刺原理和方法,这样才能是网站更容易确定主题的相关性。就seo和培训,我发现每个词语分词后有一个主词和副词,通常是优先匹配主词,然后再匹配副词,比如这里显然SEO是主词,所以优先去匹配这个词语,然后是培训这个副词。
以上就是关于有哪些比较好的中文分词方案全部的内容,包括:有哪些比较好的中文分词方案、jieba分词(R vs. python)、卧底分词小程序有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)