我正在尝试实现一个系统,它将维基百科映射到一个图形,其中节点是文章标题,链接和边缘是它们之间的关系。
此过程称为wikification,已经implemented。
到目前为止,我的方法如下:
现在,我需要计算每个链接的关键短语。关键短语定义为:
k(n) = no. of articles term appeared as alink/ no. of articles term appeared in
我想就如何存储我的链接提出一些建议,以便能够以最短的时间复杂度计算关键短语。
现在,对于我的图表中的每个节点,我将不得不解析4M文章来计算它。
注意:维基百科中的表面形式是一个重定向到另一个页面的页面。
答案 0 :(得分:0)
我建议你使用维基百科mysql database dump。从该数据库中,您可以轻松找到包含短语作为其中链接的文章的计数。
对于您需要在维基百科中找到不同频率和文档频率的部分,您可以使用Lucene API来索引维基百科,然后Lucene为您提供了一系列功能来获得不同的频率。
答案 1 :(得分:0)
k(n)=没有任何术语出现的链接/否。时间总计出现
但是,该值对于提取关键字非常有用。 我做的是我首先迭代转储中的所有文章,解析它们并收集所谓的锚索引,其中包含维基百科中所有链接的所有锚文本,并为每个锚定项增加一个计数器(你也可以只增加一次每一页都能达到你的价值)。然后我将此索引存储为内存中的已排序String []数组,并再次遍历所有文章,并从锚索引中的文章文本中查找所有9克语,如果它存在,则会增加"总计&#34 ;这个术语的计数器(你可以为每篇文章增加一次)。
我使用java和简单的数组循环来实现这一点,这是可行的(在具有16gb ram和AMD phenom ii x4 955处理器的机器上计算时间不到2天。)
这是2011年的英文维基百科,它提取了92,893,007个链接,导致13,585,647个术语的术语词汇映射到3,428,014个文章/概念。如果你想使用它,我仍然有数据。