Python 使用字符串对列表进行聚类

Python 使用字符串对列表进行聚类,python,pandas,nlp,cluster-analysis,Python,Pandas,Nlp,Cluster Analysis,因此,我的数据集目前看起来如下所示: ['microsoft','bizspark'], ['microsoft'], ['microsoft', 'skype'], ['amazon', 's3'], ['amazon', 'zappos'], ['amazon'], 。。。。 等等 现在,我想做的是将它们相互关联,使用Levenstein距离来计算单词分数 现在,我将遍历所有列表,并将距离与以下列表进行比较 microsoft -> ['microsoft','bizspark'],

因此,我的数据集目前看起来如下所示:

['microsoft','bizspark'],
['microsoft'],
['microsoft', 'skype'],
['amazon', 's3'],
['amazon', 'zappos'],
['amazon'],
。。。。 等等

现在,我想做的是将它们相互关联,使用Levenstein距离来计算单词分数

现在,我将遍历所有列表,并将距离与以下列表进行比较

microsoft -> ['microsoft','bizspark'], ['microsoft'], ['microsoft', 'skype'],
amazon -> ['amazon', 's3'], ['amazon', 'zappos'], ['amazon'], ....
问题是如何做到这一点?如果我逐字计算每个levenstein距离,即对于['amazon'、'zappos']和['microsoft'、'bizspark'],我将首先得到两对:(amazon,microsoft),(amazon,bizspark),(zappos,microsoft),(zappos,bizspark)并计算每对的距离

或者我真的应该从这些中创建字符串,然后计算距离吗

然后我应该得到一个距离为:

                            ['microsoft','bizspark'] | ['amazon', 'zappos'] ....
    ['microsoft','bizspark']           1             |          ?
    _-------------------------------------------------------------------------
    ['amazon', 'zappos']               ?             |          1
            ...
            ....
那么我如何将聚类应用于此以确定截止阈值

讨论了一个使用单字的建议

但是我不知道如何处理单词表


请注意,在实现方面,我正在根据需要使用Python库,如Numpy、Scipy、Pandas和。

您要匹配的内容可能主要取决于您的目标。如果您要匹配其中一个词,可能应该分别匹配这两个词。如果您要匹配短语,则“”。join()“给他们打电话可能是个好主意

顺便说一句,我最近使用difflib.get_close_matches()进行了一些模糊匹配。它在Python标准库中。我不反对您可能使用的任何Levenstein距离库;我只想指出这个选项对我有效。

可能是“频繁项集挖掘”您需要的不仅仅是集群


它会发现频繁的单词组合,因此每个文档可能是多个模式的一部分。

我想主要原因之一是我自己理解Levenstein距离是如何工作的,我必须真正掌握并理解你建议的一个模式的有效性和内部工作原理,但我会看一看。我想也许组合一个权重并尝试匹配两个单词和字符串会很有趣->我想知道这是否会提供更多信息或使其失去清晰度。但是如果我处理匹配每个单词的问题,那么我不太确定如何进行匹配。当两个单词都匹配时,我是否会创建成对并立即进行聚类ORD是一样的,比如上面的microsoft一个?在你确定要实现什么之前,这可能更适合。还可以查看水母库。它提供了其他距离度量,例如我个人认为更有用的jaro距离。我刚刚研究了这个。我不确定它是否会有帮助,主要是因为单词可能会有be拼写错误,然后不匹配-没有更正方面。此外,上面显示的每一对实际上都有键,这基本上是需要维护的字符串,如“Microsoft Bizspark London”。另外,对可能永远不会重复,我假设通过频繁进行项集挖掘,我将丢失可能会丢失的内容出现一次…试着在你的问题中更清楚你想做什么。我会认为稀有的单词对是噪音,然后丢弃它们。