6/4 知识图谱生成研究

今天只做了一点微小的贡献。关于利用最大频繁序列来生成知识图谱我今天做了很多尝试。

一个是不利用最大序列,直接用之前生成的所有频繁序列来画图:对每个序列中,直接前项连后项。这样的确可以造出来图,但是联系线的粗细极不均匀,有些线因为出现在好多个频繁序列中导致被反复计数,而且由于较长的序列子序列多,里面中部位置的子序列被频繁反复计数,严重夸大了重要程度,前天那个测试demo跑出来,本来在数据集中出现比较多的Java-》数据结构画完只有八次,但是数据库-》计算机网络这个就是因为出现在长序列中部,被反复画了十二次,这重要程度已经和现实不符了。所以不能用所有的频繁序列画、问题就是长序列会导致中部联系反复计数。

另一个是直接用最大序列来画,关于其中的事件集需要特殊处理。我的思路是如果前后事件集都是只有一个事件,那就连起来,如果前面是一个,后面是集合,检查后面的集合里是不是有前面那个,如果有,就前后不连接了,把后面的事件集做全连接。如果前后都是事件集,那么前后做一个类似二分图的全连接,再把后面的里面全连接。这样做出来效果是的确可以比较好的刻画最大频繁序列,序列各个位置的权重也类似,但是事件集中的全连接会使图变得比较密集。我不知道这是不是有道理的,毕竟如果一个事件集出现在序列里,那不仅说明了这个事件集和它前后的顺序关联,也说明了这个事件集中的几个事件联系是很紧密的,频繁的一起出现才成为频繁项集。所以暂定采用这个方案。

接下来有一个新的问题,需不需要一个知识图谱的底图。因为按照最大序列,的确是可以体现出什么是重要的节点,但是这样会忽略掉那些支持度不够的节点,这对用户来说可能并不是一个想要的结果。因为每个人可能都会有自己独特的兴趣点,而这种独特恰巧是与频繁序列相违背的。所以又写了一个底图生成算法。将所有节点全连接,得到2-序列,然后逐个检查是否在数据库中出现过这样的用户,使得2-序列的前一项在一个用户序列中的事件集中,而后一项在这个用户序列的下一个事件集中;或者这个序列的两项同时出现在某一个事件集中。这样就找到全部出现的关联了。

然后把这两个图一合,应该就成了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值