我应该使用哪种算法来根据集合

时间:2016-11-20 20:58:18

标签: python scikit-learn

我有以下问题。

我有一个包含多行单词的大数据集。 那就是。

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

我想在所有这些单词中创建4个类别,然后将新的单词行匹配到4个类别中的一个。单行中的单词以某种方式连接,但我没有任何关于如何获得单词行的信息。

我可以使用scikit-learn或其他python包中的算法吗?

编辑:

我看到我提供的信息很少。

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

但是我不想创建很多类别,所以我想组合类别。因此,如果事实证明'狗'与'house'在同一行中很多次,那么如果de关键字中存在'dog',我可以建议'house'。

我不想预先设置类别,我想首先获取组,然后创建一个与最佳单词匹配的类别。

1 个答案:

答案 0 :(得分:1)

您想生成单词表示吗?如果是这样,您可以使用gensims word2vec创建单词向量。您可以做的是将每一行用作句子并删除逗号,然后您将学习哪些单词组合在一起,具有相似上下文的单词将具有相似的单词嵌入。然后,您可以在单词向量本身上运行k-means,并根据表示获得更好的集群。

从你的问题来看,如果你知道特定的单词总是在一起并且想要创建一个步骤的类别,但在那一点上我认为你不需要使用k-means,除非当然不是这样的。你可以有任何单词组合,并想知道哪些组合是相似的,在这种情况下你可以将每个单词设置为整数id,因此apple1door - > 2wood - > 3等等。然后像第一个例子那样的矢量看起来像[1,1,1,0,....0]。这里的问题是K-means对这些向量的影响不大,如果你只是不知道一起出现的单词模式,那么你最好建立单词嵌入。