2021SC@SDUSC
这次源代码分析的内容是在概述中提到的模型算法的第二步,即对事实集合进行Fact-Follow迭代,从而得到新的事实集合,然后再根据新生成的事实集合,进行Fact-Follow迭代,从而得到新的事实集合,循环往复迭代进行t跳(hop)后,得到最终的事实集合。
毫无疑问,这次源代码分析的主要内容便在于何谓Fact-Follow迭代。因此,这次的源代码分析共分为两部分,一部分是对抽象的Fact_Follow迭代算法的详细描述,另一部分则是对DrFact模型的源代码的具体分析。
一、 Fact-Follow迭代算法
要了解什么是Fact-Follow迭代算法,紧靠文字的三言两语很难说清,因此我们需要以下图的帮助,这能让我们更加直观的了解Fact-Follow迭代算法是如何进行的。
1. 共现检索得到
从图中可见,Fact-Follow迭代函数是一个输入参数为问题q和前一跳所得事实集合(第一轮迭代时使用初始化的事实集合),输出本跳迭代新事实集合的函数。
据此,先对前一跳所得事实集合进行共现检索,即,得到。具体直观体现在算法图的左下方,红色的与绿色的矩阵S相乘,得到。
2. 语义检索得到
下一步,如算法图左上方所示, 红色的与蓝色的矩阵D相乘,即,得到。
然后将和问题q作为函数g的输入参数,即,计算得到向量。
最后ÿ