用于处理房屋的户型矢量数据的方法、电子设备和介质与流程

文档序号:21410814发布日期:2020-07-07 14:46阅读:577来源:国知局
用于处理房屋的户型矢量数据的方法、电子设备和介质与流程

本公开涉及数据处理,特别涉及对房屋的户型矢量数据的处理。



背景技术:

“户型”是人们描述房屋的常用术语,也是人们选择房屋时会考虑的重要指标。户型一般是指房屋的空间布局,可以包括房屋中例如客厅、卧室、厨房、卫生间等各个房间的数量、位置和/或面积等信息。

通过比较户型图,人们可以直观地判断出两个房屋的空间布局是否相似。然而,在存在海量户型的情况下,逐一进行人工判断已不可能,需要依赖计算设备进行相似性比较。而如何使得计算设备的判断结果尽可能地符合人类的感官判断,是一个需要解决的问题。



技术实现要素:

根据本公开的一个方面,提供了一种由计算机实现的用于处理房屋的户型矢量数据的方法。所述方法包括:根据所述户型矢量数据,计算所述房屋的任意两个分间的特征点之间的距离,以及将计算得到的所述距离排列成数组,基于所述数组生成用于表征所述房屋的分间布局的向量。其中,所述分间的特征点是对应于所述分间的几何图形的中心或重心。

在一些实施例中,所述将计算得到的所述距离排列成数组包括:根据每个距离所涉及的两个分间的分间类型,对计算得到的所述距离进行归类使得在所述数组内形成至少一个距离子组,其中,同一距离子组中的每个距离所涉及的两个分间的分间类型分别与该距离子组中任意一个其他距离所涉及的两个分间的分间类型相同。其中,基于所述户型矢量数据获取所述分间的分间类型。

在一些实施例中,对所述至少一个距离子组中的每个距离子组中所包括的所有距离按数值大小进行排序。

在一些实施例中,所述方法还包括:根据所述户型矢量数据,获取所述房屋中的各个分间的面积;根据每个面积所涉及的分间的分间类型,将所述面积进行归类使得在所述数组内形成至少一个面积子组,其中,同一面积子组中的每个面积涉及的分间类型相同。其中,基于所述户型矢量数据获取所述分间的分间类型。

在一些实施例中,对所述至少一个面积子组中的每个面积子组中所包括的所有面积按数值大小进行排序。

在一些实施例中,所述方法还包括:根据所述户型矢量数据,获取所述房屋的第一二维拓扑矩阵,其中所述第一二维拓扑矩阵中的值表示所述值的所在行所代表的分间与所述值的所在列所代表的分间之间是否相邻可达。其中,所述数组包括所述第一二维拓扑矩阵作作为子组。

在一些实施例中,所述方法还包括:根据所述户型矢量数据,获取所述房屋的第二二维拓扑矩阵,其中所述第二二维拓扑矩阵中的值表示所述值的所在行所代表的分间与所述值的所在列所代表的分间之间是否共享墙体。其中,所述数组包括所述第二二维拓扑矩阵作为子组。

在一些实施例中,所述方法还包括:预先规定所述至少一个距离子组中的每个距离子组所能包含的距离的总数。其中,当一个距离子组所能包含的距离的总数大于应归类到所述距离子组的距离的数量时,所述距离子组中多出的空位用零补齐。

根据本公开的另一个方面,提供了一种用于基于分间布局对房屋进行聚类的方法。所述方法包括:获取根据上述方法生成的用于表征待聚类房屋的分间布局的向量,对所述向量进行聚类处理。其中,所述聚类处理包括作为第一阶段的粗粒度聚类处理和作为第二阶段的细粒度聚类处理。

在一些实施例中,所述粗粒度聚类处理将向量处理为多个一阶类簇,其中分别为所述多个一阶类簇分配相应的第一标签。

在一些实施例中,所述粗粒度聚类处理使用k-means算法。其中,所述k-means算法中k的值与计算单元的数量有关。

在一些实施例中,所述细粒度聚类处理使用均值漂移算法。

在一些实施例中,所述细粒度聚类将所述多个一阶类簇中的每个一阶类簇处理为多个二阶类簇,其中分别为所述多个二阶类簇分配相应的第二标签。

在一些实施例中,将所述多个二阶类簇中的每个二阶类簇结合相应的第一标签和第二标签进行存储。

根据本公开的另一个方面,提供了一种用于基于分间布局对房屋进行聚类的装置。所述装置包括:分间布局特征数据库,用于存储利用上述方法由户型矢量数据生成的用于表征房屋的分间布局的向量;数据加载器,用于从所述分间布局特征数据库获取所述用于表征待聚类房屋的分间布局的向量;和聚类运算器,用于对所述向量进行第一阶段的粗粒度聚类处理和作为第二阶段的细粒度聚类处理。

根据本公开的另一个方面,提供了一种电子设备,包括:处理器;以及存储程序的存储器,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行本公开所述的方法。

根据本公开的另一个方面,提供了一种存储程序的非暂态计算机可读存储介质。所述程序包括指令,所述指令在由装置的处理器执行时,致使所述装置执行本公开所述的方法。

附图说明

附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。

图1是示出了人们对房屋的多种分间布局是否相似的直观判断;

图2示出了现有技术中由计算机实现的判断不同房屋分间布局的相似性的方法;

图3是示出根据示例性实施例的用于处理房屋的户型矢量数据的方法的流程图;

图4是示出根据示例性实施例的用于表征房屋分间布局的向量模板;

图5是示出根据示例性实施例的用于向量模板的相邻可达矩阵。

图6是示出根据示例性实施例的用于向量模板的共享墙体矩阵;

图7是示出根据示例性实施例的基于分间布局对房屋进行聚类的方法的流程图;

图8是示出根据示例性实施例的对向量进行数据加载的示意图;

图9是示出根据示例性实施例的用于基于分间布局对房屋进行聚类的装置示意图;

图10是示出根据本公开的示例性实施例的电子设备的示例的框图。

具体实施方式

在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。

在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。

在本公开中,房屋可以理解为适于居住或商用的具有分间的建筑物。房屋的分间可以理解为该房屋中根据其功能划分出的不同的空间。以住宅为例,分间可以包括但不限于客厅、卧室、厨房、卫生间等;此外,取决于描述户型所希望达到的精细程度,将阳台、过道、衣帽间等具有特定功能的空间视为分间也是可以设想的。房屋的分间布局可以理解为房屋的户型或空间布局。

此外,本领域技术人员理解,矢量数据是利用欧几里德几何学中点、线、面及其组合体来表示地理实体空间分布的一种数据组织方式。由于空间数据具有属性特征(表示实际物体或目标、现象的性质)和空间特征(表示物体或目标的空间位置),所以在计算机中可用一对或一组坐标加上属性码(或称特征码)来表示空间数据,这样的数据可以称为矢量数据。矢量数据可以包括点实体、线实体和面实体。其中,点实体可直接用坐标值描述;线实体可用均匀或不均匀间隔的顺序坐标链来描述;面实体(或多边形数据)可用边界线来描述。相应的,户型矢量数据是用于描述房屋的户型或分间分布的矢量数据,基于户型矢量数据可以生成房屋的户型矢量图。

图1借助附图示出了人们对房屋的分间布局是否相似的直观判断。从图中可知,即便是房屋对应的户型矢量图出现了平移、对称或旋转,人们仍然可以比较容易地判断出相应的分间布局是否相似。

图2示出了现有技术中一种由计算机实现的判断不同房屋的分间布局的相似性的方法。

在图2中,三个待比较的房屋户型矢量图被置于相同的坐标系中,通过分间呈现在坐标系上的绝对位置坐标的几何属性进行相似性判断。例如,在比较图2左侧的房间户型矢量图与图2右上和右下的户型矢量图是否相似时,可以先获取左侧的分间“室-1”在坐标系中的绝对位置,然后判断右上和右下的户型矢量图中在该绝对位置处是否同样存在“室-1”。从图2示出的例子中可知,右上的户型矢量图在该绝对位置处也存在“室-1”,而右下的户型矢量图在该绝对位置处对应的则是“厅”。类似的,可以依次比较“室-2”、“厨-1”、“厅”、“卫”。通过基于绝对位置的比较,可以得出图2右上的分间布局与左侧的分间布局相似、而右下的分间布局与左侧的分间布局不相似的结论。然而,进一步仔细比较图2中右上和右下的户型矢量图可以看出,两者之间的区别仅在于房屋的朝向不同(体现在户型矢量图出现旋转),而上述现有技术的判断方法则得出了分间布局不相似的结论。此外,除了矢量图发生旋转的情形外,上述判断方法也同样无法准确判断对称、平移和/或缩放的户型矢量图的相似性。

上述判断分间布局相似性的几何描述方案因此存在需要对齐的问题。然而,如果将户型矢量图通过穷举各种相似变换再对齐到一个相同坐标系的相同位置进行比较,会导致极大的计算复杂度。

现有技术还提供了基于房屋分间的拓扑关系判断分间布局相似性的方法。例如,可以基于户型矢量图得到房屋分间的拓扑关系,即,分间之间的相对位置的信息。基于拓扑关系描述分间布局能做到一定程度上的(例如由拉伸、弯曲引起的)变形不变性。然而,这种方法的问题在于:如果户型的变形已经超出合理范围(例如将一个户型无限拉伸成长条形),其拓扑关系依然会保持不变,但此时因为外形(几何尺度)差异过大已经不再会被人们认为是相似户型了。

此外,上述两种基于户型矢量图的比较方法都是两两比较(pair-distance),这样的比较方式对计算资源要求很高。例如,假设需要在一个包含1亿户型数据的数据库中查找一个分间布局相似的户型,则必须和库中所有的户型一一比较,随着数据量大规模增加,相似匹配的计算量会变成天文数字。

因此,需要一种处理户型矢量数据的方法,可以从户型矢量数据中提取表征房屋分间布局的信息,以便更加有效地比较房屋分间布局的相似性。

图3示出了根据一个示例性实施例的用于处理房屋的户型矢量数据的方法的流程图。

在步骤s301中,根据户型矢量数据,计算房屋的任意两个分间的特征点之间的距离。其中,分间的特征点是对应于所述分间的几何图形的中心或重心。

如上所述,户型矢量数据包括其所属房屋的相关的真实空间尺寸数据。基于户型矢量数据,可以确定房屋中所有分间的类型(例如,厨、厅、室、卫)、各类型的分间的个数、以及各分间的形状、位置和面积等信息。换言之,基于户型矢量数据可以基本上真实地还原出所述房屋的俯视图,进而可以获得每个分间在该俯视图中对应的几何图形及其尺寸。对于本领域技术人员而言,已知几何图形的尺寸计算其重心的方法是已知的,在此不做赘述。另外,计算规则几何图形的中心的方法也是已知的。对于不规则的几何图形,根据一种实施方式,可以先确定该不规则几何图形的最小外接矩形,然后确定该最小外接矩形的中心作为不规则几何图形的中心。应当理解,基于本公开的教导,本领域技术人员无论基于几何图形的中心还是重心继续下文将要描述的方法步骤都是可选的,都落入本公开所要求保护的范围之内。仅为了说明的简洁起见,下文仅以几何图形的中心作为分间的特征点的一种实施方式进行说明。

在计算距离之前可以对户型矢量数据进行校验。数据校验会判断户型矢量数据的格式是否符合处理的要求,校验内容例如包括校验点集、校验线集、校验面集。具体的,校验点集可以包括确认点是否非空、是否是重复点;校验线集可以包括确认线是否非空、线引用的点是否存在;校验面集可以包括确认面是否非空、边界点是否按照顺时针排列等。

基于由户型矢量数据得到的关于房屋的分间的数据,可以计算出任意两个分间中心的距离。这里的距离可以理解为从一个分间的中心出发到达另一个分间的中心的距离,也可以根据业务含义对距离进行自定义。

根据一些实施例,可以计算任意两个分间的特征点的欧式距离。选用欧式距离的优点在于对于分间的几何约束会更强,同时计算量较小。

根据一些实施例,可以计算任意两个分间的特征点的曼哈顿距离。曼哈顿距离可以部分地考虑真实路径的约束。

根据一些实施例,可以计算任意两个分间的特征点的最近可达距离。可达距离例如计算从一个分间的中心(起点)到另一个分间的中心(终点)的地图可达路径距离,其对于计算资源要求较高,但较真实地反映了人在房屋中的真实行走情况。

基于本公开的教导,本领域技术人员可以根据具体的业务需求和可用计算资源的情况,任意选择上述三种距离中的一个实施本公开中的方法。仅为说明的简洁起见,下文中涉及计算任意两个分间的特征点之间的距离时可以统一理解为计算任意两个分间的中心之间的欧式距离。

以图1左侧的分间布局为例,该房屋包括一间厨房(厨-1)、两间卧室(室-1、室-2)、一间客厅(厅)以及一间卫生间(卫)。因此,根据s101的步骤需要计算的分间的距离包括:厨-1至室-1的距离、厨-1至室-2的距离、厨-1至厅的距离、厨-1至卫的距离、室-1至室-2的距离、室-1至厅的距离、室-1至卫的距离、室-2至厅的距离、室-2至卫的距离以及厅至卫的距离等共10个距离。

如前所述,本公开中的分间并不限于厨、室、厅、卫。依据预期的分间精细程度,阳台、过道、衣帽间等具有特定功能的空间也可被视为分间,并以与图1中的示例类似的方式进行处理。

在步骤s303中,将计算得到的距离排列成数组,基于所述数组生成用于表征所述房屋的分间布局的向量。

计算得到的多个距离可以按照预定的顺序排列成数组。仍然以图1左侧的分间布局为例,可以将计算得到的10个距离按下列顺序排列组成数组并由此生成向量:【厨-1至室-1的距离、厨-1至室-2的距离、厨-1至厅的距离、厨-1至卫的距离、室-1至室-2的距离、室-1至厅的距离、室-1至卫的距离、室-2至厅的距离、室-2至卫的距离、厅至卫的距离】。当然,任意其他预定的顺序也是可行的。基于上述示例的顺序,对于其他分间类型和数量与图1左侧所示房屋相同的房屋(即,包括一间厨房、两间卧室、一间客厅以及一间卫生间),可以同样地计算并生成相应的向量。每个生成的向量用于表征其所对应的房屋的分间布局,因此,可以通过比较向量来判断房屋的分间布局的相似性。

由于在上述步骤中,向量中的各距离都是分间的相对距离,并没有引入用于对齐的绝对坐标系,从而解决了现有技术几何描述方案的需要对齐的问题,也因此解决了旋转、平移、对称不变性的问题。此外,由于相对距离的计算考虑了相对关系,本公开的方法也天然具备了拓扑的相对特征,同时又解决了基于拓扑关系描述分间布局无法约束几何尺度的问题。

根据一些实施例,将计算得到的距离排列成数组包括:根据每个距离所涉及的两个分间的分间类型,对计算得到的所述距离进行归类使得在所述数组内形成至少一个距离子组,其中,同一距离子组中的每个距离所涉及的两个分间的分间类型分别与该距离子组中任意一个其他距离所涉及的两个分间的分间类型相同。其中,基于所述户型矢量数据获取所述分间的分间类型。

以上述示例中的十个距离(厨-1至室-1的距离、厨-1至室-2的距离、厨-1至厅的距离、厨-1至卫的距离、室-1至室-2的距离、室-1至厅的距离、室-1至卫的距离、室-2至厅的距离、室-2至卫的距离、厅至卫的距离)为例,通过对距离进行分类后,可以对数组内的十个距离进行重新排列,得到例如【<厨-1至室-1的距离、厨-1至室-2的距离>、<厨-1至厅的距离>、<厨-1至卫的距离>、<室-1至室-2的距离>、<室-1至厅的距离、室-2至厅的距离>、<室-1至卫的距离、室-2至卫的距离>、<厅至卫的距离>】的新的向量。其中,分间类型分别相同的两个分间之间的距离被归类为一个距离子组:厨-1至室-1的距离、厨-1至室-2的距离因为同样涉及厨房到卧室的距离而被归类为同一个距离子组;类似的,室-1至厅的距离、室-2至厅的距离因为同样涉及卧室到客厅的距离而被归类为同一个距离子组。上述包含距离子组的新的向量因此可以简化表示成【<厨、室>、<厨、厅>、<厨、卫>、<室、室>、<室、厅>、<室、卫>、<厅、卫>】。可以理解,对应不同分间类型的距离子组在向量中的其他顺序也是可行的。此外,上述图1左侧分间布局只是示例性的,向量中还可以包括其他的距离子组,例如,根据房屋的分间类型和数量还可以包括<厅、厅>、<卫、卫>、<过道、阳台>等距离子组。

通过设置距离子组将有关联的距离在向量中的位置进一步集中,有利于对齐向量进而为向量的比较提供便利。例如,在比较两个向量时,可以优先选定并比较<室、室>距离子组,便可知两个分间布局中的卧室的距离是否相似,从而尽早排除明显不相似的分间布局。

根据一些实施例,可以对所述至少一个距离子组中的每个距离子组中所包括的所有距离按数值大小进行排序。

距离子组内的排序可以选择升序或降序。例如,上述示例向量中<厨、室>、<室、厅>等距离子组内都有两个距离,可以对其中进行排序。排序使得对应向量位置的特征具有相同的含义。具体的,在比较两个向量时,可以优先比较<室、厅>距离子组中最大的距离,便可知两个分间布局中的卧室到客厅的距离是否相似。相反,对于未进行排序的数组,比较两个房屋的最大室-厅距离时仍然要在距离子组内成对(pair-wise)扫描地所有距离,才能得到最大的那个距离。具体的,根据传统的两两比较的方法,需要先从户型a中挑出一个相对距离和户型b的对应距离子组中找最“接近”的计算距离差,接着再比较剩下的距离,每次计算都需要扫描一遍整个距离子组,因此计算量大、效率低。通过排序,对应向量位置的特征具有相同的含义(相当于对齐了特征的维度,本质上是距离特征被映射同一个特征空间中),从而为进行空间索引提供了基础。通过避免两两比较,可以有效节省所需的计算资源。

基于上述,可以通过将具有相同业务意义的相对距离按一定顺序固定的同一个距离子组中,构建出一种具有多个距离子组的嵌入向量模板。这样,对于多个房屋,可以得到一组被映射到同一特征空间的特征向量,因此可以利用空间索引(kd-tree、ball-tree等等)手段进行高效的检索,从而可以避免传统的两两比较(pair-distance)。

根据一些实施例,可以预先规定所述至少一个距离子组中的每个距离子组所能包含的距离的总数。当一个距离子组所能包含的距离的总数大于应归类到所述距离子组的距离的数量时,所述距离子组中多出的空位用零补齐。

每个距离子组中包含的距离的总数和相应分间的数量有关。例如,对于一个具有3间卧室两间客厅的房屋,距离子组<室、室>中包含的距离总数等于3,即,室-1至室2的距离、室-1至室3的距离、室-2至室3的距离;距离子组<室、厅>中包含的距离总数等于6,即,室-1至厅1的距离、室-2至厅1的距离、室-3至厅1、室-1至厅2的距离、室-2至厅2的距离、室-3至厅2的距离。

可以预先设定用于表征房屋的分间布局的向量的维度,由此确定可以适用于海量房屋的分间布局的向量模板。因此,在基于数组生成表征房屋的分间布局的向量时,对于分间类型和数量不同的房屋,可以通过空位补零使得生成的向量与预先设定的向量模板具有相同的维度。具体的,对于和向量模板相比没有那么多分间的户型,也可以通过补零代表一种不存在的虚拟分间。

图4示出了一个示例性的向量模板,其中包括如下距离子组:<室、室>、<室、厅>、<室、厨>、<室、卫>、<厅、厅>、<厅、厨>、<厅、卫>、<厨、厨>、<厨、卫>、<卫、卫>。以图1左侧分间布局为例,由于其中客厅、卫生间和厨房的数量均为1,因此,在由计算得到的距离数组生成向量时,在<厅、厅>、<厨、厨>、<卫、卫>距离子组处进行空位补零。从图4中还可以看出,在<室、厅>、<室、厨>、<室、卫>等距离子组中,计算得到的距离按降序排列。应当理解,向量中各个距离子组的排列顺序、以及每个距离子组中各个距离的排列顺序都是可以预先设定的。

通过对市面上现存房屋户型的统计发现,两室一厅一厨一卫占比60%,三室两厅一厨三卫占比20%,一室一厅一厨一卫占比15%。换言之,至少95%的户型具有的卧室的最大数量是3,客厅的最大数量是2,厨房的最大数量是1,卫生间的最大数量是3。因此,可以按照上述分间类型和分间数量的统计数据设定向量模板,一方面,可以覆盖现存的绝大多数户型样本,从而在很大程度上保证了搜索的全面性;另一方面,又不至于为了全面覆盖房屋户型样本,而过度占用计算资源。在此基础上,本领域技术人员根据搜索范围和计算资源的具体考虑,灵活设定具有不同维度的向量模板也是可以设想的。

根据一些实施例,可以根据所述户型矢量数据,获取所述房屋中的各个分间的面积;根据每个面积所涉及的分间的分间类型,将所述面积进行归类使得在所述数组内形成至少一个面积子组,其中,同一面积子组中的每个面积涉及的分间类型相同。其中,基于所述户型矢量数据获取所述分间的分间类型。

通过在向量模板中加入面积子组,使得可以更加全面地对分间布局进行描述。

根据一些实施例,可以对所述至少一个面积子组中的每个面积子组中所包括的所有面积按数值大小进行排序。

面积子组内的排序可以选择升序或降序。例如,在比较两个向量时,可以优先比较与卧室对应的面积子组,便可知两个分间布局中的卧室面积是否相似。相反,对于未进行排序的数组,比较两个房屋的最大卧室仍然要在面积子组内成对地(pair-wise)扫描所有面积,才能得到最大的那个面积。通过避免两两比较,可以有效节省所需的计算资源。

根据一些实施例,可以根据所述户型矢量数据,获取所述房屋的第一二维拓扑矩阵,其中所述第一二维拓扑矩阵中的值表示所述值的所在行所代表的分间与所述值的所在列所代表的分间之间是否相邻可达。所述数组包括所述第一二维拓扑矩阵作作为子组。

图5示出了基于图1左侧户型图生成的相邻可达矩阵。其中,每个分间分别对应了矩阵中的一行和一列。如果两个分间是相邻可到达的(例如通过一扇门连通),则矩阵中相应的值为“1”。例如,对应于“b-1”和“l-1”的为“1”,表示室-1和客厅相邻可达;对应于“b-1”和“t-1”的值为“0”,表示室-1和卫生间不相邻可达。

优选的,在横纵列的分间可以按照一定顺序(升序或降序)排列,这样的优势是在海量数据运算时可以保持对应二维矩阵变量具有相同的意义。在向量中包含相邻可达矩阵,可以进一步增强分间布局相似判断的准确性。

根据一些实施例,可以根据所述户型矢量数据,获取所述房屋的第二二维拓扑矩阵,其中所述第二二维拓扑矩阵中的值表示所述值的所在行所代表的分间与所述值的所在列所代表的分间之间是否共享墙体。其中,所述数组可以包括所述第二二维拓扑矩阵作为子组。

图6示出了基于图1左侧户型图生成的共享墙体矩阵。其中,每个分间分别对应了矩阵中的一行和一列。如果两个分间共享墙体,则矩阵中相应的值为“1”。例如,对应于“b-1”和“l-1”的为“1”,表示室-1和客厅共享墙体;对应于“b-1”和“t-1”的值为“0”,表示室-1和卫生间不共享墙体。

优选的,在横纵列的分间可以按照一定顺序(升序或降序)排列,这样的优势是在海量数据运算时可以保持对应二维矩阵变量具有相同的意义。在向量中包含共享墙体矩阵,可以进一步增强分间布局相似判断的准确性。

此外,向量模板也可以用于比较具有多层结构的房屋。例如,可以以层为单位,根据前述的方法生成各层的子向量,再将多个子向量整合生成最终用于表征该具有多层结构的房屋的分间布局的总向量。

利用上述方法生成的用于表征房屋的分间布局的向量可以存储在数据库,便于之后构建空间索引树;同时,该部分数据可以作为描述房屋分间布局的一种十分有效的特征应用于相似户型推荐、相似户型聚类,以及其他需要用到描述户型特征的系统和模型中。可以有效地提升模型的召回率,解决海量数据的匹配性能问题。

利用上述方法生成的用于表征房屋的分间布局的向量也可以直接用于空间索引查询,例如基于k-dtree/balltree,使得原本需要比较全集的查询可以通过高效的空间索引解决。

根据本公开的另一个方面,还提供一种电子设备。所述电子设备可以包括:处理器;以及存储程序的存储器。所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述的用于处理房屋的户型矢量数据的方法。

根据本公开的另一方面,还提供一种存储程序的计算机可读存储介质。所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行上述的用于处理房屋的户型矢量数据的方法。

如上所述,根据本公开的方法生成的用于表征房间分间布局的向量可以用于户型聚类。在海量的户型库中,存在大量具有类似分间布局(分间数、分间排布、面积等等)的房屋,这些共同的性质包含巨大的分析和商业价值。例如,类似的户型可以共享或借鉴类似的装修方案,对主流户型/消费者户型偏好进行调研等等。户型的聚类分析不仅可以提升装修行业的效率,甚至对于整个居住行业的发展也有一定的帮助。

传统的户型聚类方法只是浅显地利用户型的一些统计特征进行聚类。例如,不同类型分间数、面积、周长等等。这些聚类方法都很难表达出人类感官所预期的户型类簇,换言之,传统的户型聚类不能表达户型关键的布局特征。另一方面,随着数据量的增大,算法也逐渐暴露出不可忽视的性能问题。这主要是三方面原因造成的:1)没有合理的布局特征的表达和相似度计算,导致大量相似户型无法聚类;2)对于海量户型数据,聚类算法的时间复杂度过高。传统的聚类在海量数据情况下,时间和空间复杂度会飙升,有极大的性能问题;3)户型特征具有高纬稀疏性,并且没有任何形状和密度假设,而一般的聚类方法只有在满足前述条件时,聚类的结果才有保证。

因此,需要有一种对于房屋的分间布局进行聚类的方法,从而解决上述问题的一个或多个。

图7示出了根据一个示例性实施例的基于分间布局对房屋进行聚类的方法的流程图。

在步骤s701中,获取用于表征房屋的分间布局的向量。

计算用于表征房屋的分间布局的向量的方法,可以参考上述相关内容,在此不在赘述。其中,对于所述向量已经存储于分间布局特征数据库中的情况,进行所述聚类处理之前,需要对数据库进行数据加载、以及预处理进而重新转换成表征房屋的分间布局的向量。图8示出了根据一个示例性实施例对向量进行数据加载的过程。

在步骤s801中,将分间布局特征数据库中的数据进行逻辑分片。例如,将数据库存储的海量户型按照城市居室数组成多个不同的逻辑分片。例如,可以根据业务需求按照城市、(城市)区、商圈、小区进行分片,分片加载可以优化海量的户型数据加载预处理性能。

在步骤s803中,对步骤s801中产生的逻辑分片进行分片拉取,以便提供给处理单元进行后续处理。例如,可以计算每个逻辑分片所拥有的数据量,合并不超过一定阈值数量的分片(例如两个),作为一个执行单元预处理的批次,待处理完成当前批次后再拉取下一批继续处理,直到将数据全部预处理完毕。

在步骤s805中,处理单元对经分片拉去的数据进行预处理。所述预处理可以包括如下操作:反序列化字符串变成数据字典、解析数据字典从而组成多维向量。可选的,所述预处理还包括校验特征的非空性、校验特征值域合法性、业务阈值过滤。其中,经分片拉取后的数据可以由多个处理单元并行处理。在此,每个处理单元可以是处理器的一个核心或者计算集群的一个执行节点。

在步骤s703中,对获取的用于表征待聚类房屋的分间布局的向量进行作为第一阶段的粗粒度聚类处理。

根据一些实施例,所述粗粒度聚类处理使用k-means算法。其中,所述k-means算法中k的值与计算单元的数量有关。这里,计算单元是指可以用来进行作为第二阶段的细粒度聚类处理的计算单元。k-means算法预先假设存在k个类簇,通过不断迭代求出每个样本的最近中心,不断收敛到一个稳定的均值位置,此均值位置即最后这些样本属于的类簇。

在上述公式1中,x表示包含n个向量的数据集。k-means算法要把n个向量划分到k个类簇ci使得组内平方和最小,ui是类簇ci中所有点的中值。为了加速算法,可以使用效率较高的欧式距离。此外,标准化欧式距离、余弦相似度、马氏距离也是可以设想的。

作为第一阶段的粗粒度聚类处理的目的在于将大量的用于表征待聚类房屋的分间布局的向量先分成若干类簇,增加了后续细分类相似分间布局户型的命中率。换言之,通过第一阶段的粗聚类处理可以把非常不相似的户型预先排除在作为第二阶段的细粒度的聚类处理候选集之外,这样省去了多余的相似度计算量,大大提高聚类的效率。

此外,经过粗粒度聚类处理得到的每个类簇是一个独立的数据集,因此可以独立地分配到任意的执行单元进行第二阶段的细粒度聚类处理。因此,即使数据量再大,聚类处理的时间复杂度依然保持近似线性上升,而不是指数爆炸式的增长。因此,在硬件实施方面,一旦遇到计算瓶颈,只需要横向拓展集群即可。由于一阶聚类通常需要在单节点执行,所以要在保证聚类效果的同时,尽量保证运行的效率。

根据一些实施例,所述粗粒度聚类处理将向量处理为多个一阶类簇,其中分别为所述多个一阶类簇分配相应的第一标签。所述标签可以便于后续的粗粒度查询。

在步骤s705中,对经过粗粒度聚类处理的数据进行作为第二阶段的细粒度聚类处理。

根据一些实施例,所述细粒度聚类处理使用均值漂移算法(mean-shift)。

均值漂移算法是一种基于核密度估计的爬山算法,适用于高维稀疏无形状假设的户型,使户型类簇更合理。均值漂移算法的基本形式可以表达为:

其中,kernel代表核函数,例如rbf核函数(radialbasisfunctionkernel)。n(xi)表示包含若干xj的、中心(均值)为xi的一个领域。

不同于k-means算法,因为在一个未知的户型数据集中不可能知道到底有几类户型簇,mean-shift聚类不需要指定k的数量。而dbscan算法虽然不需要指定k,但它有簇密度的假设,换言之,户型簇是按照某种距离紧密得结合在一起,但本身户型簇不存在统一的聚类密度,因此基于密度的聚类的结果往往不尽如人意。

因此,使用mean-shift聚类的好处有以下两点:1)不需要预先指定最终类簇的数量,也没有密度假设;2)只需指定核函数kernel的半径(radius)就可以,这里的半径决定了户型相似的最大距离,这样无缝衔接了户型的相似距离阈值。

当然,由于每一维度的特征存在不同的方差,可以结合标准化欧式距离、马氏距离或者余弦相似度等方法解决最终距离权重不同的问题。

根据一些实施例,所述细粒度聚类将所述多个一阶类簇中的每个一阶类簇处理为多个二阶类簇,其中分别为所述多个二阶类簇分配相应的第二标签。所述标签可以便于后续的细粒度查询

根据一些实施例,将所述多个二阶类簇中的每个二阶类簇结合相应的第一标签和第二标签进行存储。

采用二级标签的分开存储以及它们的标签合成形式,同时兼容了粗粒度模糊查询加速以及细粒度精确定位,适于保存海量户型的聚类结果。针对粗粒度的类簇模糊查询,只需要先将一级标签锁定,这样就缩小了检索的候选集,再使用二级标签筛选结果即可。而针对细粒度类簇精确查询,通过组合一级标签和二级标签,可以得到一个新的类标签,并且这个标签具有唯一性,因此可以迅速而精确定位。

采用两阶段(two-stage)的任务分解方式先对表征分间布局的向量进行一次粗粒度聚类,再在粗粒度类内进行一次细粒度聚类,极大地提升了计算性能。

图9示出了一种用于基于分间布局对房屋进行聚类的装置900。

装置900包括分间布局特征数据库901,用于存储利用如上所述的方法由户型矢量数据生成的用于表征房屋的分间布局的向量;数据加载器903,用于从所述分间布局特征数据库获取所述用于表征房屋的分间布局的向量;以及,聚类运算器905,用于对所述向量进行第一阶段的粗粒度聚类处理和作为第二阶段的细粒度聚类处理。

此外,装置900还可以户型类簇数据库,用于结合二阶标签存储聚类结果。

上述借助图7和图8对相关方法步骤的描述相应地适用于图9所示的装置,在此不做赘述。

根据本公开的一个方面,还提供一种电子设备。所述电子设备可以包括:处理器;以及存储程序的存储器。所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述的用于处理房屋的户型矢量数据的方法。

根据本公开的另一方面,还提供一种存储程序的计算机可读存储介质。所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行上述的用于处理房屋的户型矢量数据的方法。

参见图10所示,现将描述计算设备2000,其是可以应用于本公开的各方面的电子设备的示例。计算设备2000可以是被配置为执行处理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数字助理、机器人、智能电话、车载计算机或其任何组合。上述意图识别方法可以全部或至少部分地由计算设备2000或类似设备或系统实现。

计算设备2000可以包括(可能经由一个或多个接口)与总线2002连接或与总线2002通信的元件。例如,计算设备2000可以包括总线2002、一个或多个处理器2004、一个或多个输入设备2006以及一个或多个输出设备2008。一个或多个处理器2004可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。输入设备2006可以是能向计算设备2000输入信息的任何类型的设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或遥控器。输出设备2008可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。计算设备2000还可以包括非暂时性存储设备2010或者与非暂时性存储设备2010连接,非暂时性存储设备可以是非暂时性的并且可以实现数据存储的任何存储设备,并且可以包括但不限于磁盘驱动器、光学存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁介质,光盘或任何其他光学介质、rom(只读存储器)、ram(随机存取存储器)、高速缓冲存储器和/或任何其他存储器芯片或盒、和/或计算机可从其读取数据、指令和/或代码的任何其他介质。非暂时性存储设备2010可以从接口拆卸。非暂时性存储设备2010可以具有用于实现上述方法和步骤的数据/程序(包括指令)/代码。计算设备2000还可以包括通信设备2012。通信设备2012可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙tm设备、1302.11设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。

计算设备2000还可以包括工作存储器2014,其可以是可以存储对处理器2004的工作有用的程序(包括指令)和/或数据的任何类型的工作存储器,并且可以包括但不限于随机存取存储器和/或只读存储器设备。

软件要素(程序)可以位于工作存储器2014中,包括但不限于操作系统2016、一个或多个应用程序2018、驱动程序和/或其他数据和代码。用于执行上述方法和步骤的指令可以被包括在一个或多个应用程序2018中,并且上述方法可以通过由处理器2004读取和执行一个或多个应用程序2018的指令来实现。更具体地,上述用于处理房屋的户型矢量数据的方法中,步骤s101~步骤s103可以例如通过处理器2004执行具有步骤s101~步骤s103的指令的应用程序2018而实现。类似的,上述基于分间布局对房屋进行聚类的方法中的步骤也可以例如在另一相应的电子设备中通过其处理器2004执行具有执行相应步骤中的指令的应用程序2018而实现。软件要素(程序)的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质(例如上述存储设备2010)中,并且在执行时可以被存入工作存储器2014中(可能被编译和/或安装)。软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。

还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现特定元件。例如,所公开的方法和设备中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如verilog,vhdl,c++)对硬件(例如,包括现场可编程门阵列(fpga)和/或可编程逻辑阵列(pla)的可编程逻辑电路)进行编程来实现。

还应该理解,前述方法可以通过服务器-客户端模式来实现。例如,客户端可以接收用户输入的数据并将所述数据发送到服务器。客户端也可以接收用户输入的数据,进行前述方法中的一部分处理,并将处理所得到的数据发送到服务器。服务器可以接收来自客户端的数据,并且执行前述方法或前述方法中的另一部分,并将执行结果返回给客户端。客户端可以从服务器接收到方法的执行结果,并例如可以通过输出设备呈现给用户。

还应该理解,计算设备2000的组件可以分布在网络上。例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。计算系统2000的其他组件也可以类似地分布。这样,计算设备2000可以被解释为在多个位置执行处理的分布式计算系统。

虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1