所以我的数据集目前如下所示:
['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'],我首先得到对:(亚马逊,微软),(亚马逊,bizspark) ),(zappos,microsoft,(zappos,bizspark)并计算每对的距离。
或者我应该真的只是从这些创建字符串,然后计算距离?
我最终得到的是具有距离的NXN矩阵:
['microsoft','bizspark'] | ['amazon', 'zappos'] ....
['microsoft','bizspark'] 1 | ?
_-------------------------------------------------------------------------
['amazon', 'zappos'] ? | 1
...
....
那么如何将聚类应用于此以确定截止阈值?
使用单个单词的一个这样的建议被讨论here
但我不确定如何处理单词列表!?
请注意,关于实现,我正在使用Python库,例如Numpy,Scipy,Pandas以及所需。
答案 0 :(得分:0)
您所匹配的内容可能主要取决于您的目标。如果你想匹配任何一个单词,你可能应该分别匹配这两个单词。如果你想与短语匹配,那么'.join()'可能是一个好主意。
顺便说一下,我最近使用difflib.get_close_matches()做了一些模糊匹配。它位于Python标准库中。我对你可能使用的Levenstein距离库没有任何反对意见;我只想指出这个选项对我有用。答案 1 :(得分:0)
也许“频繁项目集挖掘”比集群要求更多。
它会找到频繁的单词组合,这样每个文档可能是多个模式的一部分。