爱彼迎如何运用机器学习和自然语言处理技术,从未结构化的文本数据中挖掘有关房源的有用信息,为房客打造个性化体验。
引言
在爱彼迎,我们深知要为房客提供最佳体验,就必须深入理解和收集房源的结构化数据。例如,远程工作的房客需要知道房源是否设有适合的工作空间和稳定的网络连接,而有孩子的房客可能需要高脚椅和婴儿床等设施。然而,这些属性信息并非所有房源都明确显示,导致房东的房源描述与房客的需求之间存在不匹配。
这只是我们利用平台上产生的未结构化数据的例子之一。这些数据包括各种房客与平台互动产生的文本数据,经过匿名处理后,我们可以从中提取出有用的结构化数据。考虑到房客关注和查询的属性众多,我们开发了一个名为 Listing Attribute Extraction Platform (LAEP) 的机器学习系统,用于大规模地提取结构化数据,而无需依赖房东手动输入所有可能的房源属性。
LAEP 旨在自动从上述的未结构化的文本数据中提取出有用的结构化信息,例如房源的属性信息。由 LAEP 收集到的属性会被整合到各种应用中,以此来构建爱彼迎的房源知识库。为下游工具如属性优先级系统 (APS) 和房源属性收集系统 (Eve) 提供支持。
除了可以提取房源属性,LAEP 还能检测出各种类型的实体,如活动、房源设施以及著名的地标等景点。这就为我们支持更广泛的产品应用提供了可能性,例如,接待设施数据可以帮助房客在入住期间获得个性化服务,而活动数据可以帮助识别和创建新的房客喜爱的类别。
图 1. 从 LAEP 到下游应用如房源属性收集系统 (Eve) 和属性优先级系统 (APS) 的过程示意图,然后将数据反馈到结构化数据目录
在 LAEP 出现之前,爱彼迎已经有多种收集房源的结构化信息的方式,包括供房东使用的房源编辑页面,供房客使用的补充评论流程(SRF),以及与第三方供应商的合作。然而,这些方法都面临着一些挑战和限制。例如,为了提升房客的评论体验,我们在标准的评论流程中减少了 SRF 问题的展示,导致了从房客那边收集的数据量减少。因此,从未结构化文本数据中提取房源信息的需求日益增长,LAEP 正是为了解决这些问题而被开发出来,实现这个数据收集过程的自动化。
LAEP 通过收集并分析匿名处理过未结构化的文本数据,为提升爱彼迎房东和房客体验的潜在应用提供了可能。
LAEP 的实现
LAEP 主要由三个组件组成:
命名实体识别 (NER): 该组件可以将文本中的特定短语(词组)或实体识别为预定义的类别,如便利设施、景点和设施。例如,"游泳池" 这个短语会从各个来源被检测出来,并被识别为一个类型为 "便利设施" 的实体。
实体映射 (EM): 一旦实体被识别出来,EM 就会将其映射到在房源属性数据库(房源属性分类)中的标准房源属性。这使得 LAEP 能够通过将检测到的实体与其对应的属性关联起来,创建一个全面的房源目录。
实体评分 (ES): ES 能够确定一个被检测到的短语在房源中是否存在。它能推断出提到的属性是否真的存在于关联的房源中,并提供一个表示置信度的分数。
下面是 LAEP 内部组件的示意图:
图 2. LAEP 包括三个主要组件:命名实体识别,实体映射和实体评分
命名实体识别
虽然市面上有许多预训练的 NER 模型可以提取出通用的实体类别,但是没有一个模型能完全支持爱彼迎的使用场景。因此,我们开发了自己的 NER 模型,从非结构化的文本中识别和提取对爱彼迎业务重要的预定义实体。
NER 模型定义了五种对爱彼迎来说重要的实体类别(便利设施,设施,服务,位置特点,和结构细节)。我们从六个渠道中取样并标记了 3 万个示例文本来训练 NER 模型。在当前的产品使用场景中,我们应用了语言检测模块并只筛选出英文文本(未来我们可能会构建基于 Transformer 的多语言 NER 模型,以处理非英语内容),然后将文本切分成 tokens。NER 模型使用卷积神经网络(CNN)架构来定位实体的位置,并给实体打上标签。输出是一个识别出的命名实体列表,格式为 <实体标签, 开始索引, 结束索引> 的元组。将所有组件结合起来,就形成了如图 3 所示的 NER 流程。
图 3. NER 流程概述和功能组件
图 4 为识别出的实体的输出示例。
图 4. 从 NER 流程中的示例输出。检测到的实体被高亮显示,每个实体类别都以不同的颜色标记
标记的数据集被以 9:1 的比例随机划分为训练集和测试集。模型训练完成后,我们通过所有的文本渠道在测试数据集上评估模型的性能。我们使用严格匹配作为评估标准,这要求模型同时正确地识别实体的边界和类别。模型的整体表现以及每个类别的表现如图 5 所示。
图 5. NER 模型的示例性能指标(精确度,召回率,F1 分数)
实体映射
人们有多种方式来描述同一种东西。比如我们发现存在超过十二种描述“钥匙盒”这个属性的方式,像 锁箱, 锁-箱, 锁盒, 和 钥匙箱。由于使用移动设备输入,像“所盒”这样的拼写错误也很常见。因此,我们需要将各种不同的命名实体形式映射到标准实体名称,按照标准分类法定义,以便用于下游应用。
尽管我们只有数百种房源属性,但每年却能检测到数百万个的短语,其中许多短语都映射到同一个属性(比如“钥匙盒”),而其他一些短语则没有对应的映射结果。为了解决这个问题,我们为映射结果引入了置信水平,为每个映射结果分配一个介于 0 和 1 之间的置信值,如果没有结果超过置信阈值,那么就标记为“无映射”。
对大量的不同的短语和可能的属性进行映射标记非常困难。映射标记需要比较不同的短语和 800 多个属性名称之间的语义相似性。为了解决这个问题,我们首先采用无监督学习方法,大大的减少标记的工作量。
图 6. 实体映射:将文本中检测到的 NER 短语映射到预定义的房源属性
在 LAEP 中,实体映射的步骤包括:
预处理:将房源属性和检测到的短语都进行预处理,例如把单词转换为小写和词形还原,以此消除不必要的单词变体。
映射到词嵌入:将所有标准的房源属性映射到词嵌入空间,这是针对爱彼迎的文本数据对 word2vec 模型进行微调得到的。
寻找最相似的属性:对于一个经过预处理的检测到的短语,在词嵌入空间中基于余弦相似度确定最接近的房源属性。相似性得分作为映射的置信级别。
如上图所示,我们将短语 "钥匙-盒" 映射到了房源属性的嵌入空间,并与每个属性进行比较。我们找到了与属性 "钥匙盒" 相关的最接近的匹配,因此它被识别为最佳的映射结果。
实体评分
检测到的短语映射到标准房源属性之后,推断属性的元数据,比如其是否存在、是否可用就变得非常重要。其中,某个属性是否存在对于房客的体验尤为关键,尤其是对于像 "婴儿床" 或 "高脚椅" 这样的便利设施,对于有婴儿的客人来说更是如此。
LAEP 中的存在模型通过对文本进行分类来确定映射的属性是否存在于房源中。它提供一个离散的输出(是,未知,否),表示属性的存在,并同时输出一个表示推断置信度的分数。
标签类别分为 {是,未知,否},其中 "是" 表示属性存在,"否" 表示不存在,而 "未知" 则用于处理从文本上无法确定的存在情况(例如,无法确定便利设施是否存在)。
图 7. 关注某些的实体的元信息进行实体评分的示意图
为了构建这个文本分类模型,ES 组件使用了一种微调的 BERT 模型。它对包括检测到的短语及其上下文的源数据进行分析,以推断属性在房源中是否存在。输出的结果可以用在 APS 和 Eve 系统中,为房东提供推荐,推销现有的房屋属性,或者展示热门的房源中的设施。
图 8. 存在性评分模型的架构
模型架构(图 8)使用了一个预训练的 BERT 模型,使用了来自六个不同数据源的文本数据进行训练。输入的文本被截断为最大长度为 512 的 tokens。经验研究表明,使用检测到的短语前后的 65 个单词(前 32 个和后 32 个)作为输入可以得到最好的结果。来自 [CLS] token 的嵌入通过一个全连接层,dropout 层和 ReLU 线性投影层,生成一个表示标签类别识别结果的概率向量。
结论
在本文中,我们介绍了爱彼迎内部引入的一个端到端的结构信息提取系统 LAEP。它能从各种文本数据源中检测出需要关注的短语,将这些短语映射到标准的房源属性分类中,然后从文本的上下文信息中推断出属性的元信息。同时,LAEP 还设计了隐私控制,不处理个人信息。LAEP 被应用在如 APS 等下游应用中,也可以用来帮助我们的团队发现新的房源类别,挖掘对房客重要的新房源属性。它帮助了我们大规模地更深入理解爱彼迎的房源信息,并可能在将来应用到更多的使用场景,不断改善我们的房东和房客的体验。
作者:Hongwei Li,Peng Wang
译者:Keyao Yang
感谢所有项目参与者的努力,合作与支持!
如果你想了解关于爱彼迎技术的更多进展,欢迎关注我们的 Github 账号(https://github.com/airbnb/) 以及微信公众号(爱彼迎技术团队)