2016-11-20 40 views
0

我有以下问题。我应该使用哪种算法来根据集合对词进行聚类

我有一个包含单词行的大数据集。 所以即

apple,door,wood 
window,door,house 
boot,pie,dessert 

我想创建4个类别出所有这些单词,然后字的一个新行匹配到4个类别中的一个。单行中的单词之间有某种联系,但我没有任何关于如何获得单词的信息。

scikit-learn或其他python包中有一个算法,我可以使用它吗?

编辑:

我看到我给了很少的信息。

单词可以是一个网页中的关键词,然后我想根据这些关键词选择一个类别,这样我可以对下一篇文章的内容提出建议。

但是,我不想创建到很多类别,所以我想结合类别。也就是说,如果结果'狗'与'house'在同一行很多次,那么如果'dog'存在于关键字中,我可以建议'house'。

我不想在前面设置分类,我想首先获取分组,然后创建一个与最佳词相匹配的分类。

+0

就目前而言,您的问题非常不清楚和广泛。什么是类别?你想分类行还是单词?你试过什么了? scikit-learn为许多不同的机器学习算法提供了实现。 –

+0

数据集中的单词是否有所不同?或者你是否发现任何“模式”,比如说经常重复自己的单词?你能计算你拥有的不同单词的数量吗? –

+0

@EliKorvigo我增加了更多信息。我只是从scikit开始,所以还不知道算法。但我想到了kmeans或minibatch,但不知道如何用多个集合来做到这一点。 – user3605780

回答

1

您想生成文字表示吗?如果是这样,你可以通过使用gensims word2vec创建单词向量。你可以做的是用每一行作为句子并删除逗号,然后你会学到什么词汇汇集在一起​​,并且具有相似语境的词汇将会有相似的词汇嵌入。然后,您可以对单词向量本身运行k-means,并根据表示形式获得更好的集群。

从你的问题,如果你知道具体的词总是聚集在一起,并希望创建类似的一步,但在这一点上,我不认为你会需要使用k-means,除非当然这不是这种情况你可以有任何字的组合,并想弄清楚哪些组合是类似的,在这种情况下,你可以将每个字设置为一个整数ID,所以apple1door2,wood3等等和等等。然后像第一个例子那样的矢量看起来像[1,1,1,0,....0]。这里的问题在于K-means对于这些向量不会很好,如果你只是不知道单词的模式,那么你更好地构建单词嵌入。

+0

谢谢我会试试这个。 – user3605780

相关问题