如何通过编辑距离对句子进行分组?

时间:2017-05-21 16:17:28

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

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

(例如Sentx POS标签= [CC DT VBZ RB JJ],Senty POS标签= [CC DT VBZ RB JJ])处于群集编辑距离= 0,

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

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

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

1 个答案:

答案 0 :(得分:0)

只有一组有限的POS标签。

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

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