使用NLP具有深度学习的智能标记

使用自然语言处理(NLP)技术,用于丰富物业信息,不仅有助于增加不同的财产标签的覆盖,同时保持高精度,而且有助于提高消费者体验。努力在搜索页面上改进上市过滤器的覆盖范围,我们开发了内部模型,解析了列出的描述以生成标签,例如属性是否具有车库,地下室,私人池等。我们构建了多级分类模型使用转移学习技术和最先进的预训练的变压器模型,例如Distilbert..

在这个博客文章中,我们将讨论我们的端到端解决方案智能标签从想法到生活。我们首先介绍处理管道,提供整个过程/路线图的高级视图,然后我们深入进入特定部分,了解有关该方法的更多细节。

商业需求

realtor.com.随时都有数百万个列表,每个都有各种功能。消费者将不可能通过所有列表来选择与其相关的列表。因此,消费者利用Realtor.com上的选项来过滤相关的列表,使他们更容易找到他们的梦想家园。消费者可以从90多个属性属性中选择到过滤列表,例如卧室,属性类型,属性大小的数量,以及酒店是否有池,等等。我们从多个列表服务(MLS)收到每个列表的数据,该数据被处理为生成要用于搜索标记的属性属性。但是,许多MLSS提供的标签信息不一致,这减少了在应用过滤器时可以示出的列表的数量。为了克服这一点,通过在列表描述上使用正则表达式来丰富属性数据。但是,REGEX方法有几个限制。由于它们的描述不匹配可以由正则表达式解析的有限关键字的描述,许多列表都没有标记。另一方面,许多列表被错误地标记为regex无法理解包含匹配项的句子的上下文。标记错误列表的一些示例如下:

S.。清单描述正则表达式标签错误分类原因
113卧室的房子设有娱乐甲板,享有俯瞰着大型后院的迷人景致,带客房加入游泳池。 私人游泳池正则表达式查找关键字“池”,并将列表标记为池。但是,阅读描述我们可以看到列表没有池,只需添加池即可
222间卧室独立住宅,享有美景。抓住你的装备,散步到海滩上有契约。酒店距壮丽的餐厅,商场和游轮港口。滨水 正则表达式查看关键字“海滩”并将列表标记为海滨。然而,列表靠近海滩而不是海滨地段。
334卧室3浴室房价距离大学校园。宽敞的起居室配有壁炉,用餐室,大型主卧室,乘坐壁橱,掌上浴室的双人梳妆台,以及车库转换为第4间卧室/游戏室。车库列表被标记为使用正则表达式的车库。然而,车库已被转换为第4间卧室。因此,列表不应标记为具有车库。

因此,需要提出令人更聪明的方式来标记列表,从而增加标签的覆盖率和准确性。

智能标签管道

智能标签分析

realtor.com.将消费者提供使用超过90多个标签过滤列表的选项;但是,为所有90多个标签开发机器学习解决方案是不可行的两个原因是不可行的。首先,不同的MLSS为不同覆盖水平的不同标签提供数据。几个标签没有任何MLS源,并仅通过正则表达式生成。因此,我们对许多标签没有可靠或足够的训练数据。其次,虽然提供了90多个标签进行搜索,但只有一小部分标签体验高效。关于错误或改进的CSAT评论中,其中一些标签也占据突出。因此,对于我们解决方案的第一版,我们决定专注于那些具有最大影响的可能性的标签。基于我们的内部分析和讨论,我们决定在项目的第一阶段开发5个标签的解决方案。

为了克服缺乏足够的培训数据,我们选择为每个标签构建一个单独的模型。因此,我们构建了与每个​​标签对应的五个多级分类模型。

数据准备

数据收集和清洁

收集和准备数据是构建智能标签模型中最重要的步骤之一。手动标签将是最好的方法,但与自动标签相比,时间和资源量是指数的。分析来自MLSS的原始数据以确定不同标签的覆盖范围,以便选择具有大多数标签数据的数据。我们还试图涵盖来自不同地理位置和类型的数据,以确保我们有一个很好的代表性数据集,可用于创建NLP模型。我们不得不标准化数据,因为大多数MLSS具有提供数据的不同方式,例如提供布尔标签,分类标签或文本数据。因此,分析数据并处理以将原始数据转换为每个标签的布尔变量。我们还手动标记了每个标签的列表的一个小样本,以充当金标准,以确认模型的准确性,因为从MLS收到的标签中存在一些不一致。

模型培训& Validation

伯特/变压器简介

机器学习已被用于各种自然语言处理任务,例如情感分析,分类和命名实体识别。研究界对如何以捕获基础关系的方式来说如何代表文本正在快速发展,这使得能够显着提高完成这些任务的准确性。需要从划痕所需的初期培训,每个任务都需要大量的培训数据,以开发高精度模型。 2019年是与发展模式开发的NLP突破性的一年,允许使用转移学习来解决NLP任务。转移学习涉及在大型数据集中训练广义模型,然后使用与该任务相关的特定数据集进行精细调整所需的任务。这允许仅使用少量标记的训练数据来实现最新的现有性能。

伯架构进行预训练和微调(来源)

伯的释放是标志着NLP新时代开始的里程碑事件之一。 BERT设置用于多种语言任务的模型性能的记录。 BERT是一种多层双向变压器编码器模型,用于预先培训维基百科数据集和BookScorpus DataSet。然后针对特定的下游任务进行微调模型。介绍了两个版本的模型通过谷歌:

  • 伯 BASE - 12变压器层,12个关注头,1.1亿参数
  • 伯大 - 24变压器层,16个关注头,3.4亿参数

最近,已经基于BERT架构开发了多种型号,例如罗伯塔, Distilbert., 和阿尔伯特。这些模型在利用相同的底层架构的同时提高了BERT的性能。

模型培训

该模型是使用Distilbert建造的,该模型使用与原始伯特模型相同的语料库上的知识蒸馏进行预先训练。 Distilbert的参数比“Bert-Base-uncassed”减少了40%,并在胶水基准测试中保留超过95%的BERT演奏时运行60%。对于分类,将密集的完全连接(FC)层添加为模型的最后一层和随机初始化。使用此结构允许我们使用预先训练的模型进行各种任务,例如分类,问题应答和网。然后使用我们为智能标记创建的数据进行微调。在微调期间,更新语言模型和FC层的模型权重。

我们使用不同的模型类型进行了几个实验,例如BERT,DISTLBERT和ROBERTA。我们还通过修改序列长度,优化器类型,使用的参数,学习率,时代数,重量衰减和批量尺寸来执行HyperParameter调整。序列长度是模型截断大于序列长度的描述中最重要的参数之一,并且可以导致信息丢失。因此,我们分析了列表描述的序列长度的分布,以优化模型参数。同样,我们评估了不同的参数,以选择最佳组合以最大限度地提高模型的准确性。在我们的案例中,Distilbert向较大的BERT模型提供了可比的结果,同时显着提高推理速度。因此,我们使用Distilbert来开发最终的智能标签模型。以下一些最终模型培训细节如下:

损失功能交叉熵损失
学习率优化器adamw.
时代5
处理器p3 2x.large(EC2)

模型评估

如“数据准备”期间所述,我们有两个数据集,用于评估模型的性能。第一个数据集基于MLS数据的处理,并手动标记第二数据集以确保结果在处理数据期间没有引入任何偏差。该模型是在三个突出的指标的基础上进行评估–准确性,精度和召回。混淆矩阵用于到达精度,召回和准确性数字。与已加工和手动标记数据集的基线相比,我们将模型的性能进行了比较。在数据集的基线模型上,模型在精度方面给出了30-70%的电梯。每个标签的召回也与大多数标签的正则表达式基线相当,而我们将召回_〜50%的故障标签增加〜50%。因此,我们能够提高标签的准确性,同时保持每个标签的覆盖范围。

部署& Implementation

我们使用AWS Sagemaker托管所有五个ML模型及其预测函数,并将其暴露为单个推理端点。通过在DynamoDB的顶部使用REST API,可以实时使用小于20ms延迟的实时服务。这要求我们提前为所有活动列表存储ML预测(AKA标签数据)。

我们执行了一次性批处理作业来收集所有列表的预测,然后建立的近实时数据流水线设置可确保在几分钟内收到修改(添加,删除或更新)的列表。

我们的处理统计数据如下。

  • 每天列出更新,意思是:63.9k
  • 推理延迟,P90:235ms

最后,我们承认ML算法并不总是准确。因此,我们添加了一个覆盖机制,允许我们的客户关怀代表删除附加到列表的错误标记。

结论

自然语言处理是一种快速发展的现场,每天开发新技术和想法。在这篇文章中,我们审查了利用深度学习和NLP的一个例子。我们还正在努力开发其他几个产品来构建此工作,例如开发其他标签,实现自由文本搜索,并将信息与图像和文本组合以开发列表表示。这些功能将帮助我们收集有关房产的更多信息,并丰富消费者体验。

最后,我们要感谢产品,数据科学和列表的洞察力队伍进行资源,并帮助将此产品释放到生产中,特别是Sohrab Seed Fathi,Arul Bharathi,Ivan Hom和Gail Wu等。

发表评论

您的电子邮件地址不会被公开。必需的地方已做标记*