我在 mysql 中有下表:
Page; keywordId
page1; 1
page1; 3
page1; 4
page2; 4
page3; 1
page3; 3
page3; 4
page3; 5
我想创建一个相似度矩阵,其中包含基于关键字的每个页面的值,如下所示。页面之间共享的关键字越多,矩阵中的数字就越高。
page1 page2 page3
page1 - 1 3
page2 1 - 1
page3 3 1 -
在寻找答案时,我发现了这个entry on stackoverflow处理几乎相同的问题。但是,代码非常密集,我无法重现它来解决我的问题。
如有任何帮助,我们将不胜感激。
最佳答案
您想要的“类似 SQL”的解决方案将查看对并为每对提供一个单独的行:
select ft1.page as page1, ft2.page as page2, count(*) as similarity
from followingtable ft1 join
followingtable ft2
on ft1.keywordid = ft2.keywordid and ft1.page <> ft2.page
group by ft1.page, ft2.page;
如果您知道确切的页面,则旋转此页面并不困难。在 SQL 中将其转换为可变数量的页面很棘手,并且需要使用准备好的语句。
关于mysql - 根据mysql表中存储的数据创建相似度矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023557/