LinkedIn文本分析平台:主题挖掘的四大技术步骤
副标题[/!--empirenews.page--]
作者?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”;该短语满足模式匹配可以得出两个短语“通过”、“已经通过”。 基于上面模式对名词、动词短语的匹配方式,我们为两类不同的主题创建了下面的三种匹配模式。
POS模式匹配会对所有句子的POS标签进行扫描,寻找是否有与上述三种模式匹配。每一个匹配的短语都会被当成一个候选主题。 三. 主题抽取 接下来,我们需要减少重复部分、去掉短语中无关紧要的词。主题抽取步骤如下:
四. 主题排序 经过上述步骤,最终留下来的候选主题已经都最优化。接下来,需要一个标准进行主题排序,然后可以衍生出一套主题。LinkedIn通过两个步骤进行候选主题排序:
|