LinkedIn文本分析平台:主题挖掘的四大技术步骤
作者 Yongzheng (Tiger) Zhang ,译者 木环 ,本人只是备份一下。。
LinkedIn前不久发布两篇文章分享了自主研发的文本分析平台Voices的概览和技术细节。LinkedIn认为倾听用户意见回馈很重要,发现反馈的主要话题、用户的热点话题和痛点,能够做出改善产品、提高用户体验等重要的商业决定。下面是整理后的技术要点。
文本分析平台及主题挖掘
文本数据挖掘是,计算机通过高级数据挖掘和自然语言处理,对非结构化的文字进行机器学习。文本数据挖掘包含但不局限以下几点:主题挖掘、文本分类、文本聚类、语义库的搭建。LinkedIn的Voices文本分析平台架构如下图,本文将侧重讲述Voices平台中的主题挖掘模块(Topic Mining)。
在机器学习和自然语言处理等领域,主题挖掘是寻找是主题模型,主题模型是用来在一系列文档中发现抽象主题的一种统计模型。如果一篇文章有一个中心思想,那么一些特定词语会更频繁的出现。简单而言,主题挖掘就是要找到表达文章中心思想的主题词。主题挖掘的主要原因有两个:首先,文件数量迅速增长,已经依靠人工的方式实现对全部文本信息高效阅读和理解,将该流程自动化已经势在必行。其次,主题挖掘可以提高文字重度依赖应用的使用效率和产出影响,比如搜索加索引、文本总结、聚类、分类和情感分析。
从大量文字中找到主题是一个高度复杂的工作,不仅因为人的自然语言具有多层面特性,而且很难找到准确体现资料核心思想的词语。目前现有方案如:TF-IDF(Term Frequency–Inverse Document Frequency)、互信息(co-occurrence)和LDA(隐含狄利克雷分布Latent Dirichlet allocation);但是,这些算法要么是无法做到只提炼出重要主题,要么是不具高度扩展性和高效性。Voices的主题挖掘模块由LinkedIn自主研发,通过Hadoop和Spark实现,可以帮助LinkedIn规模化地进行用户反馈分析。
实现主题挖掘的四个技术步骤
Voices文本挖掘平台中的主题挖掘模块处理工作,是一个流水线处理系统,由多个自然语言模型组成的来完成。Voices的模块化步骤如下:
一. 词性标注(POS:Part-of-speech)
句子被切割成单独的词语之后,需要为每个词语加上词性标注。常见的POS为名词、动词、形容词、副词等。我们使用Java实现了斯坦福日志-线性化词性标注。每一个被分析的文件,先被切割成句子,然后分别标上词性。POS标签采用的是英文宾州树库标记。譬如,“我昨天去过了华盛顿公园”分词之后变成“我/PRP 昨天/NN 去过了/VBD 华盛顿/NNP 公园/NN” 。
二. POS模式匹配
接下来的目标是根据预定义的分词词性模式,选择出符合的POS词性标注顺序。POS模式采用正则表达式的格式,表达式可能会包含一个可递归的名词短语、一个动宾短语或者一个主谓短语等。我们观察发现,客户的反馈中,最重要的主题都是由实体名词构成,比如“主页”、“简介”;或者是事件 - 由动词名词组成的短语或动作,比如“注销账户”、“同意付款”。这使得我们创立最佳模式去寻找类似的实体词或者事件短语。为了更好地匹配,LinkedIn创立了两种不同的POS模式。
第一种适用于实体词,可递归的名词短语,名词前面可以加零或若干个修饰限定语。这样,“第二个账号”分词加标签之后为“第二个/JJ账号/NN”,最终模式匹配之后我们得到的两个短语“账号”、“第二个账号。
第二种定义的是可递归的动词短语,即包含一个或者多个连续动词。比如,短语“已经通过”对应为“已经/VBZ通过/VBN”;该短语满足模式匹配可以得出两个短语“通过”、“已经通过”。
基于上面模式对名词、动词短语的匹配方式,我们为两类不同的主题创建了下面的三种匹配模式。
- 实体词主题:一个名词短语,比如“邮箱”、“信用卡”等。
- 事件主题I:一个名词前面加一个动词的主谓结构。常见的关系到一个实体词的动作,如“申请失败”、“用户关闭”或者“上次交易失败”。
- 事件主题II:一个动词后面加上若干限定词及若干名词,动宾结构表示一件事情。此种情况下,限定词及名词可以脱离动词存在。比如“合并我的账户”、“关闭我们的旧账户”。
POS模式匹配会对所有句子的POS标签进行扫描,寻找是否有与上述三种模式匹配。每一个匹配的短语都会被当成一个候选主题。
三. 主题抽取
接下来,我们需要减少重复部分、去掉短语中无关紧要的词。主题抽取步骤如下:
词干提取:这是信息提取和数据挖掘中的关键技术步骤。在LinkedIn的主题挖掘中,“查看简历(view profile)”、“查看所有简历(view profiles)”、“已查看简历(viewed profile)”会被分入到同一个候选主题“查看简历(view profile)”。LinkedIn采用的是Java实现Porter词干提取算法。在词干提取合并候选主题时,会选择词频较高的词语作为最终的主题。如“view”和“profile”组成view profile。
去掉停止词:在选择候选主题时,还需要去掉停止词。比如文章常见的停止词:介词、代词、连词、小品词或其他辅助词语。如果最终“注销这个账户”“注销他的账户”都能被划入“注销账户”的候选主题中。LinkedIn采用的是Lextek标准版停止词。
合并同类词:为了进一步简化候选主题的整理,LinkedIn还自行添加了234个特定领域的停止词。去掉那些不会给候选主题添加价值的词语,比如社交网络领域的停止词“附加信息”、“联系我们”、“原消息”、“同样问题”、“网站”、“其他站点”、“点击链接”和“com”等。
合并语义相近的词条:最终,候选主题需要被提炼到没有同类或同义词。比如“邮箱地址”、“邮箱账号”需要被合并为一个共同主题。同样地,还可以借助WordNet之类的语库对词条进行合并,如“link”、“connection”、“association”、“partnership”和“relationship”等。LinkedIn手动添加了75组同义词。
合并特定域同类词和语义相近词可以很好地帮助候选主题的提炼,可是大部分的主题提取系统都没有重视这两项候选主题的清理策略。
四. 主题排序
经过上述步骤,最终留下来的候选主题已经都最优化。接下来,需要一个标准进行主题排序,然后可以衍生出一套主题。LinkedIn通过两个步骤进行候选主题排序:
- 我们计算每个文件中候选主题的TF-IDF值,然后根据我们的经验,我们会保留TF-IDF值最高的五个主题。TF-IDF是文件为单位的计算值,而没有考虑到文件所在的文件整个集合。
- 需要为整个文件集合产生一个单独的主题列表。LinkedIn引入了文件频率这个参数来进行整个文件集合的主题TF-IDF值的计算。
主题挖掘的业务价值
乍眼一看,这套多模块的流水线处理系统中任何模块都可以单独工作,但会有人担心无预过滤的TF-IDF计算会产生干扰和不准确的主题;不过,LinkedIn使用该系统对论坛讨论、组信息更新、博客中的用户意见文本进行主题挖掘,实践效果很好。
LinkedIn不需要人工的预览内容就可以简单地实现主题生成,同时根据文件来源的不同可以产生不同的主题。比如,账号使用者抱怨的主题可能有“主要账号”、“次要账号”、“合并账号”、“关闭账号”、“复制账号”等;简历浏览者可能关心的主题是“删除联系人”、“通讯录”、“导入联系人”、“发送邀请”和“待处理邀请”。最终,这些主题会以轮子视图的形式呈现出来,轮子内圈是实体词主题,外圈是每个实体词对应的动作。
生成主题之后,对用户抱怨反馈按照这些主题进行分类,客户服务代表据此辨别整理主题的各种情绪,从而便于用户反馈的搜索或者内容总结的生成。
此外,主题随时间的变化情况还可以用来开展趋势算法的研究。这样可以在网络媒体和社区反馈中获取重要信息。最后,还可以使用主题进行文本分类,从而降低信息维度、提高处理效率。
LinkedIn文本分析平台:主题挖掘的四大技术步骤的更多相关文章
- 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 词向量的表示主流的有两种方式,一种当然是耳熟能 ...
- 深入解读《Gartner2017年商业智能和分析平台魔力象限报告》
文 | 帆软数据应用研究院 船长 2017年2月16日,Gartner发布了2017年BI商业智能和分析平台魔力象限报告,笔者这里进行一些解读,帮助大家更好了解市场状况和趋势. 一.几家欢笑几家愁 和 ...
- [置顶]
【机器学习PAI实践七】文本分析算法实现新闻自动分类
一.背景 新闻分类是文本挖掘领域较为常见的场景.目前很多媒体或是内容生产商对于新闻这种文本的分类常常采用人肉打标的方式,消耗了大量的人力资源.本文尝试通过智能的文本挖掘算法对于新闻文本进行分类.无需任 ...
- Hermes实时检索分析平台
一.序言 随着TDW的发展,公司在大数据离线分析方面已经具备了行业领先的能力.但是,很多应用场景往往要求在数秒内完成对几亿.几十亿甚至几百上千亿的数据分析,从而达到不影响用户体验的目的.如何能够及时有 ...
- 1002-谈谈ELK日志分析平台的性能优化理念
在生产环境中,我们为了更好的服务于业务,通常会通过优化的手段来实现服务对外的性能最大化,节省系统性能开支:关注我的朋友们都知道,前段时间一直在搞ELK,同时也记录在了个人的博客篇章中,从部署到各个服务 ...
- ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台 参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为 ...
- ELK实时日志分析平台环境部署--完整记录
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- ELK实时日志分析平台环境部署--完整记录(转)
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- 浅谈ELK日志分析平台
作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 “技术干货”系列文章 ...
随机推荐
- CSS网页布局垂直居中整理
一.使用CSS3处理垂直居中方式 1.使用Flex布局处理(推荐),简单好用 body,html{ width:100%; height:100%; } .out { width: 20%; heig ...
- ES6 js中const,var,let区别 今天第一次遇到const定义的变量
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...
- Java HashSet工作原理及实现
1. 概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). ...
- 奇怪吸引子---FourWing
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- Android.mk简介<转>
文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android ...
- VBScript.RegExp 正则表达式excel vba 学习经验
1) 手动引用(前期绑定) 点击VBE编辑器菜单:工具 - 引用,选取: Microsoft VBScript Regular Expressions 5.5 Dim regex As New ...
- donet core 2.1 DateTime ToString() 方法 在不同平台返回的时间格式不一样?
跟操作系统的 设置的时间格式和系统区域设置有关.为了保持一致性.参数自己写好格式.
- elasticsearch 支持中英文搜索和混合搜索
环境: ubuntu16.04 安装: elasticsearch 5.22 1. 第一步,安装java apt-get install default-jre apt-get install def ...
- struts2:标签库图示,控制标签
目录 一.struts2标签库图示二.控制标签1. 条件判断标签(if/elseif/else)2. 迭代标签(iterator) 2.1 遍历List 2.2 遍历Map 2.3 遍历List(Ac ...
- Fluent动网格【7】:网格节点运动
在动网格中,对于那些既包含了运动也包含了变形的区域,可以通过UDF来指定区域中每一个节点的位置.这给了用户最大的自由度来指定网格的运动.在其他的动网格技术中(如重叠网格)则很难做到这一点.定义网格节点 ...