所以我有一个我的数据集,目前如下所示:
['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) ),并计算每对的距离。
或者我真的应该从这些字符串中创建字符串,然后计算距离?
然后我应该得到一个带有距离的NXN矩阵:
['microsoft','bizspark'] | ['amazon', 'zappos'] ....
['microsoft','bizspark'] 1 | ?
_-------------------------------------------------------------------------
['amazon', 'zappos'] ? | 1
...
....那么我如何对此应用聚类来确定一个截止阈值呢?
使用单个单词的一个这样的建议被讨论了here
但是我不知道如何处理单词列表!?
请注意,在实现方面,我使用Python库,如Numpy、Scipy、Pandas和按需。
发布于 2013-12-18 11:43:10
你匹配的目标可能主要取决于你的目标是什么。如果您想要匹配其中一个单词,您可能应该分别匹配这两个单词。如果你想匹配短语,那么‘’.join()‘’它们可能是个好主意。
顺便说一句,我最近用difflib.get_close_matches()做了一些模糊匹配。它在Python标准库中。我并不反对您可能使用的任何Levenstein距离库;我只是想指出这个选项对我来说是有效的。
发布于 2013-12-18 16:44:17
也许“频繁项集挖掘”比聚类更能满足你的需求。
它将发现频繁的单词组合,这样每个文档可能是多个模式的一部分。
https://stackoverflow.com/questions/20649207
复制相似问题