0

我必须根据列名中存在的标记来聚集文档(实际上是数据库的列名)。例如: -集群文档是否对文档中的标记词进行编码?

C1 = ["Date", "Birth"] 
C2 = ["Order", "Date"] 
C3 = ["Birth", "Day"] 
C4 = ["CUSTOMER", "FIRST", "NAME"] 
C5 = ["FIRST","NAME"] 
. 
. 

但是,所有这些标记实际上都是编码的,所以我收到的是以下数据集。

C1 = ["44749712dbec183e983dcd78a7736c41", "e8329d2530ca7d80bb28176883186dfd"] 
C2 = ["a240fa27925a635b08dc28c9e4f9216d", "44749712dbec183e983dcd78a7736c41"] 
C3 = ["e8329d2530ca7d80bb28176883186dfd", "03727ac48595a24daed975559c944a44"] 
C4 = ["979ee13f032c02b4652a4e3c3928d90b", "2c2624a5059934a947d6e25fe8332ade", "ad32e604e17467fc435538334fbddf3e"] 
C5 = ["2c2624a5059934a947d6e25fe8332ade","ad32e604e17467fc435538334fbddf3e"] 
. 
. 

现在我想通过消耗他编码值,使得
C1,C2,C3到簇 - >群集1
C4,C5 - >群集2

我现在不在深度上怎么做。有没有可以解决我的问题的机器学习算法?

我目前使用Spark MLlib 1.6.0,但我找不到一种方法来应用算法,如Word2Vec来解决我的问题。

是否可以在未编码的数据集上使用word2vec或算法?

谢谢。

回答

0

实际上编码不应该是一个问题,因为编码是一致的,例如,文档C1和C3中的'出生'关键字是相同的'e8329d2530ca7d80bb28176883186dfd'。至于关键作品的矢量空间映射,您可以收集所有关键词并获取等效长度的矢量,如果关键字存在,则将矢量位置标记为“1”,否则标记为“0”。然而有许多方法将文档映射到向量空间。 Refer this semila book by Jurafsk & Martin。至于执行聚类的确切模型,在这里列出的方法太多了,从K-Mean或K-Nearest Neighbor等简单的开始,在ANN空间中也有很多可用的选项。

+0

我没有预先提供所有关键字。随着我继续像扫描作业一样扫描数据库(列),将获得关键字。那么如何创建向量空间模型呢?感谢您的参考书 – Rahul

+0

这取决于您是否可以重新扫描色谱柱,或者是否必须一次完成。简单的做法是将矢量空间作为预处理步骤,然后重新扫描以实际构建数据点。它可以一次完成,但更复杂。 – Ironluca

+0

要扫描的总列数将大于1000万。无法一次扫描整个数据集。或许有可能在以后的时间点出现1000万列 – Rahul

0

尝试混入最新的炒作如word2vec和Spark并不容易。只使用你需要的东西,而不是花哨的东西。

首先你需要一个相似性。考虑每个列为集合(不需要编码),然后计算Jaccard索引或类似。然后做HAC进行集群。

+0

我以编码格式获取每列。我无法将Jaccard应用于编码格式 – Rahul

+0

当然,您可以将Jaccard应用于编码格式。为什么不? –

相关问题