邵长旭
看了一下学弟的库,我导不进来,主要好像是因为content中包含的各类标签的问题,你能不能在存content之前把各类标签和换行符都去了然后给我一份
王子悦
今天只做了一点微小的贡献。关于利用最大频繁序列来生成知识图谱我今天做了很多尝试。
一个是不利用最大序列,直接用之前生成的所有频繁序列来画图:对每个序列中,直接前项连后项。这样的确可以造出来图,但是联系线的粗细极不均匀,有些线因为出现在好多个频繁序列中导致被反复计数,而且由于较长的序列子序列多,里面中部位置的子序列被频繁反复计数,严重夸大了重要程度,前天那个测试demo跑出来,本来在数据集中出现比较多的Java-》数据结构画完只有八次,但是数据库-》计算机网络这个就是因为出现在长序列中部,被反复画了十二次,这重要程度已经和现实不符了。所以不能用所有的频繁序列画、问题就是长序列会导致中部联系反复计数。
另一个是直接用最大序列来画,关于其中的事件集需要特殊处理。我的思路是如果前后事件集都是只有一个事件,那就连起来,如果前面是一个,后面是集合,检查后面的集合里是不是有前面那个,如果有,就前后不连接了,把后面的事件集做全连接。如果前后都是事件集,那么前后做一个类似二分图的全连接,再把后面的里面全连接。这样做出来效果是的确可以比较好的刻画最大频繁序列,序列各个位置的权重也类似,但是事件集中的全连接会使图变得比较密集。我不知道这是不是有道理的,毕竟如果一个事件集出现在序列里,那不仅说明了这个事件集和它前后的顺序关联,也说明了这个事件集中的几个事件联系是很紧密的,频繁的一起出现才成为频繁项集。所以暂定采用这个方案。
接下来有一个新的问题,需不需要一个知识图谱的底图。因为按照最大序列,的确是可以体现出什么是重要的节点,但是这样会忽略掉那些支持度不够的节点,这对用户来说可能并不是一个想要的结果。因为每个人可能都会有自己独特的兴趣点,而这种独特恰巧是与频繁序列相违背的。所以又写了一个底图生成算法。将所有节点全连接,得到2-序列,然后逐个检查是否在数据库中出现过这样的用户,使得2-序列的前一项在一个用户序列中的事件集中,而后一项在这个用户序列的下一个事件集中;或者这个序列的两项同时出现在某一个事件集中。这样就找到全部出现的关联了。
然后把这两个图一合,应该就成了。
张晓敏
正在设计分数计算公式