【问题标题】:Clustering algorithms for strings字符串的聚类算法
【发布时间】:2016-07-11 09:39:10
【问题描述】:

我必须实现一个模块,在该模块中我需要将具有相似含义的句子(字符串)分组到不同的集群中。我读到了 k-means 、 EM 聚类等。但我面临的问题是这些算法是用图上的向量点来解释的。我不知道如何为具有相似含义的句子(字符串)实现这些算法。请提出一些合适的方法。

例如, 让我们考虑一个课堂场景.. 1) 教师知识渊博。 2) 学生明白老师教什么。 3) 老师有时上课准时。 4) 老师在课堂上可以听到。

假设我们有这 4 个句子。然后看着它们,我们可以说句子 1 和 2 具有相似的含义。但是第 3 句和第 4 句既不相互关联,也不与前两个相关。这样,我需要对句子进行分类。那么如何实现呢?

【问题讨论】:

  • 这是一个大问题。我认为 Google 在 Udacity 上的“深度学习”课程提供了一个很好且免费的使用 tensorflow 和 python 进行文本挖掘的介绍。
  • 我认为这个问题没有一个最佳答案,因此我投票决定将其关闭,因为它过于宽泛。话虽如此 - 看看“Word to Vector”或“Word Embedding”模型,它们在该领域表现出很大的潜力。

标签: algorithm machine-learning pattern-matching cluster-analysis data-mining


【解决方案1】:

首先,您应该熟悉bag of words 的概念。 基本思想是将句子中的每个单词映射到出现次数上,例如,对于句子hello worldhello tanay 将被映射到

Hello World Tanay
  1    1      0
  1    0      1

这允许您使用其中一种标准方法。

另外值得一看的是TF/DF,它用于重新衡量bag of words 表示中的单词,以及它们区分文档(或您的情况下的句子)的重要性

其次,您应该查看专门用于将单词聚类到概念的 LDA。然而,它是由一个视图概念组成的。

对我来说最有希望的是这些方法的组合。生成bags of words,使用TF/DF 重新加权bag of words,运行LDA 并使用LDA 概念扩充重新加权的bag of words,然后使用标准聚类算法。

【讨论】:

  • 让我们考虑一个课堂场景.. 1) 老师有足够的知识。 2) 学生明白老师教什么。 3) 老师有时上课准时。 4) 老师在课堂上可以听到。假设我们有 4 个句子。然后看着它们,我们可以说句子 1 和 2 具有相似的含义。但是第 3 句和第 4 句既不相互关联,也不与前两个相关。这样,我需要对句子进行分类。那么如何实现呢?
  • @TanayNarkhede:为了改进您的问题,您应该通过编辑将此评论合并到其中。然而,这个例子让我怀疑这是可能的。因为,即使我作为一个人也很难看到这种联系,因为它深深地隐藏在句子的语义中。
【解决方案2】:

集群不能做到这一点。

因为它在数据中寻找 stucture,但您希望通过使用统计数据难以捕捉的抽象人类概念 meaning 进行聚类...

因此,您首先需要解决让计算机可靠地理解语言这一真正艰巨的任务。而且不是基于“最佳匹配”,但足以量化相似之处。

实际上在这个方向上有一些尝试,通常涉及海量数据和深度学习。他们可以在一些玩具示例上执行此操作,例如“巴黎 - 法国 + 美国 = ?” - 有时。 Google for IBM Watson 和 Google word2vec。

祝你好运。您将需要高性能 GPU 和 EB 级训练数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 2010-10-01
    • 2016-08-25
    • 2021-10-16
    • 2014-06-13
    • 2020-06-18
    • 2011-12-29
    • 2012-01-02
    相关资源
    最近更新 更多