nlp - 如何使用 k-means (Flann with python) 对文档进行聚类?

标签 nlp cluster-analysis data-mining k-means text-mining

我想根据相似性对文档进行聚类。

我已经尝试过 ssdeep (相似性哈希),速度非常快,但我被告知 k-means 更快,而 flann 是所有实现中最快的,而且更准确,所以我正在尝试使用 python 绑定(bind)的 flann,但我找不到任何示例如何在文本上执行(它只支持数字数组)。

我对这个领域非常陌生(k-means,自然语言处理)。我需要的是速度和准确性。

我的问题是:

  • 我们可以使用 KMeans 进行文档相似性分组/聚类吗(Flann 似乎不允许任何文本输入)
  • 弗兰是正确的选择吗?如果不是,请向我推荐支持文本/文档集群的高性能库,它具有 python 包装器/API。
  • k-means是正确的算法吗?
  • 最佳答案

    您需要将文档表示为数字数组(又名向量)。有很多方法可以做到这一点,具体取决于您想要的复杂程度,但最简单的方法就是将其表示为字数的向量。

    所以这就是你要做的:

  • 计算每个单词在文档中出现的次数。
  • 选择一组将包含在向量中的“特征”词。这应该排除非常常见的词(又名“停用词”),如“the”、“a”等。
  • 根据特征词的数量为每个文档制作一个向量。

  • 这是一个例子。

    如果您的“文档”是单个句子,并且它们看起来像(每行一个文档):
    there is a dog who chased a cat
    someone ate pizza for lunch
    the dog and a cat walk down the street toward another dog
    

    如果我的特征词集是[dog, cat, street, pizza, lunch] ,然后我可以将每个文档转换为向量:
    [1, 1, 0, 0, 0]  // dog 1 time, cat 1 time
    [0, 0, 0, 1, 1]  // pizza 1 time, lunch 1 time
    [2, 1, 1, 0, 0]  // dog 2 times, cat 1 time, street 1 time
    

    您可以在您的 k-means 算法中使用这些向量,它有望将第一句和第三句组合在一起,因为它们是相似的,并且使第二句成为一个单独的集群,因为它非常不同。

    关于nlp - 如何使用 k-means (Flann with python) 对文档进行聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497252/

    相关文章:

    python - SGDClassifier 每次为文本分类提供不同的准确度

    matlab - 如何获得固定大小的SIFT特征向量?

    php - 用于确定一个句子是否等同于另一个句子的 NLP 库?

    Python - 使用逐点互信息进行情感分析

    python - NLTK 二元词袋函数引发 "Don' 不知道如何连接类型“错误 - python

    machine-learning - DBSCAN 和边界点

    python - 相邻矩阵中的度中心性和聚类系数

    python - 如何手动定义 Lisa 簇的颜色?

    OPTICS(聚类)算法的 Python 实现

    machine-learning - 数据挖掘中的异常值处理