【问题标题】:How to group sentences by edit distance?如何按编辑距离对句子进行分组?
【发布时间】:2017-10-21 07:09:52
【问题描述】:

我有一大组(36k 句)句子(文本列表)及其 POS 标签(POS 列表),我想使用编辑距离/Levenshtein 对 POS 列表中的元素进行分组/聚类:

(例如 Sentx POS tags= [CC DT VBZ RB JJ], Senty POS tags= [CC DT VBZ RB JJ] )在集群编辑距离=0,

while ([CC DT VBZ RB JJ], [CC DT VB RB JJ]) 在簇编辑距离=1。

我了解聚类算法的工作原理,但我很困惑如何在 python 中解决这样的问题以及如何将聚类存储在数据结构中以便我可以轻松地检索它们。

我尝试创建一个矩阵(测量每个句子与语料库中所有句子的距离),但处理时间很长。

【问题讨论】:

  • 可能值得在cs.stackexchange.com 提问,因为这是一个算法设计问题,而不是一个编程问题。似乎您需要研究聚类算法:无论是什么语言,蛮力总是会太慢。

标签: python machine-learning nlp cluster-analysis edit-distance


【解决方案1】:

只有一组有限的 POS 标签。

而不是使用编辑距离,只计算一次 POS-POS 相似度矩阵一次。您甚至可能想要编辑所需的矩阵,例如使两个POS标签有效地相同,或者增加两个标签的差异。

将其存储在一个 numpy 数组中,将所有向量转换为索引,然后使用该查找表计算相似度。出于性能原因,尽可能使用 numpy,并在 cython 中编写性能关键代码,因为 Python interpreter 非常慢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多