【问题标题】:How to cluster sentences based on same word?如何根据同一个词对句子进行聚类?
【发布时间】:2013-12-01 17:46:32
【问题描述】:

这是我的示例数据:

maybe add a higher-level description
min of spare daemons
data in the appropriate order
the compiled max daemons
an iovec to store the trailer sent after the file
data in the wrong order
an iovec to store the headers sent before the file
return err maybe add a higher-level desc
if a user manually creates a data file

我想进行集群方法并自动将这些数据分类 同一个词出现在句子中,所以我想要实现的是这样的:

  1. 添加

    可能会添加更高级别的描述

    return err 可能会添加更高级别的 desc

  2. 恶魔

    最少的备用守护进程

    编译的最大守护进程

  3. iovec

    一个iovec,用于存储在文件之前发送的标头

    一个iovec,用于存储文件后发送的预告片

  4. 数据

    数据顺序错误

    按适当顺序排列的数据

    如果用户手动创建数据文件

谁能给我一些帮助?非常感谢!

【问题讨论】:

    标签: machine-learning data-mining cluster-analysis


    【解决方案1】:

    听起来好像您想找到最常用的词

    不是很难做到(也不是“聚类”,只是按常用词计数和分组),你尝试过什么,你卡在哪里了?

    【讨论】:

    • 非常感谢 Anony,我想我们的答案就是我想要的!
    【解决方案2】:

    我认为您特别需要的是最小覆盖。每个句子都可以被其中的任何单词“覆盖”,并且您想要一组至少覆盖每个句子一次的单词,对吗?

    您可以在 https://en.wikipedia.org/wiki/Set_cover_problem 上详细了解此类问题——事实上,在 NP Complete 中可以完美地做到这一点。

    一种方法是一个简单的贪心算法,寻找一个涵盖最多句子的词(集合中最常见的词,没有重复计算的句子),然后选择该组并继续剩下的。

    在很多情况下,这远非最佳,尤其是如果您希望组具有相似的大小。实际上,您可能想丢弃涵盖太多的词——例如,根据集合的不同,“程序”可能出现在许多项目中,但与大多数项目并不特别相关。

    在这种情况下,找到什么是相关的问题。也许有某种参数 A 来表示组的数量是有意义的,然后你的程序可以针对每个给出大致 N/A 个句子的单词?计算单词频率,寻找那个点(N/A 的频率),然后慢慢添加单词,直到涵盖所有内容。然后在最后一个后期阶段,以尝试组合公共集合的子集,以使其整体更干净。

    【讨论】:

    • 嗨,Alex,非常感谢您的热情回复,我从中学到了很多,希望您一切顺利!
    猜你喜欢
    • 2013-08-12
    • 2017-05-03
    • 2019-08-12
    • 2014-07-19
    • 1970-01-01
    • 2019-09-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多