R语言中文分词10分钟快速入门
来源: | 作者:k君 | 发布时间: 2017-03-21 | 275 次浏览 | 分享到:
独乐乐不如众乐乐,我们的数据科学家与分析师在纷繁复杂的工作中发现了一些可以提升数据分析效率的技巧,并很乐意奉献给刚入门或正准备入门工业大数据的攻城狮们,抛砖引玉,如有不同见解或有更深了解需求,欢迎后台留言。n n文本数据是工业大数据中一种重要的数据形式,包括如设备维修工单、服务反馈信息和产品质检报告等蕴藏着重要价值的文本。以维修工单为例,包含产品的故障问题、故障原因和解决方案等等描述信息。通过分析这些文本数据,工业企业可以及时发现产品质量问题,更能基于数据提示普遍趋势与建议方法,并形成反馈回路加速产品优化设计。然而,文本信息通常是半结构化和非结构化的手工填报记录,人工统计费时费力。有效采用文本挖掘技术,在相同的故障工单数据下,使统计分析效率大大提升。n n中文文本挖掘的主要技术包括中文分词、特征提取、文本分类、文本聚类、关联分析、文本摘要等,其中中文分词是文本挖掘最基础的步骤,其目的是将一个汉字句子切分成一个一个单独的词,便于后续的分析挖掘。本文将对中文分词基本流程、中文分词算法及R语言中文分词包进行简要介绍。n n一、分词基本流程n n中文的分词基本流程见图1。通常说分词,是指包括导入词典、执行分词两个步骤的狭义分词。但在实际的项目中,还需要做大量的文本预处理和后处理工作。n nn图1n n1.文本预处理,分词前的文本处理,通常需要用正则表达式来完成。n na) 同义词替换。比如“紧急停机”、“急停”、“度”和“°”、“号”和“#”,业务语义相同,分词之前应统一成一种说法。n nb) 英文大小写统一。小写英文都变大写,如”plc”换成”PLC”,反之亦然。n nc) 利用特定规则获取关键信息。比如打算在文档标题中提取故障名,发现标题符合“某项目某机组报某故障”命名规则,就可以利用正则表达式提取故障信息。n nd) 利用文本以外的结构化信息。如想去除文本中包含设备编号(A1、LY-12等),但这些编号很难总结出一定规则,这时如果找到含设备编号字段的文档表格(如设备台账),就可以直接取来用于过滤。n n2.文本后处理,分词后的文档词组的删除合并操作。n na) 去除停止词。建立停止词库,去除“了”、“和”、“因为”、”发现”等,这些高频且对分析无意义的虚词、连词、动词等。n nb) 利用特定规则删除词。比如日期,2016年、1月。如不希望成为关键词,应使用正则表达式滤除。n nc) 处理歧义词。比如分词结果是“某编号”、“齿轮箱”两个词,前者单独出现时表示发电设备,但当两个词连续出现时,则表示某编号齿轮箱,因此需要合并处理。n n二、常见中文分词算法n n分词技术常见的有两大类:n n1.机械分词法n n即扫描字符串,如果发现字符串的子串和词典中的词相同,就算匹配,因此也叫基于字符串匹配的分词方法。这类分词通常会加入一些启发式规则,比如“正向/反向最大匹配”,“长词优先”等。常用的几种机械分词方法如下:n na.正向最大匹配法(由左到右的方向);nb.逆向最大匹配法(由右到左的方向);nc.最少切分(使每一句中切出的词数最小)。n n机械分词方法是一种很简单高效的分词方法,它的速度很快,都是O(n)的时间复杂度,效果也可以。但缺点是对歧义和新词的处理不是很好,对词典中未出现的词没法进行处理,因此经常需要其他分词方法进行协作。n n2.统计分词法n n统计分词法基于人工标注好的语料库对中文进行模型训练,在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。常见的几种统计方法如下:n na.nGram模型;nb.隐马尔可夫(HMM)模型;nc.条件随机场(CRF)模型。n n统计类分词算法对于识别未登录词拥有较好的识别能力,分词精度较机械分词法高。但是需要大量的人工标注语料库,分词速度慢。 实践中,一般都是多种分词方法结合起来使用,相互弥补。n n即:使用词典+统计法结合的方法,用词典来存储大部分关键词,使用统计法识别新词。n n三、R语言分词工具n n表1总结了R语言在文本挖掘中常用的工具包,其中Rwordseg和jiebaR是目前R中最主流的中文分词工具包,这里予以着重介绍。n n