【发布时间】:2017-08-06 00:23:11
【问题描述】:
我有一个 Wikipedia 转储,我想过滤掉属于某个类别(例如“宗教”)的文章。我知道每篇文章在text 字段的底部都有一个类别列表,但问题是只列出了直接的类别(例如,“耶稣”文章属于“宗教”类别,但“宗教”本身未在底部列为其类别之一)。
我的方法
我的第一种方法是使用categorylinks 表并给定一个特定的高级类别,例如“宗教”,遍历列出每个类别或页面底部的“宗教”的类别图。
问题
在我偶然发现这种情况之前,我做得很好:
Religion -> Religon and society -> Religion and science -> Religion in science fiction -> Jedi -> 关于星球大战的分类和文章。
所以,根据我的算法,文章Return of the Jedi 属于高级类别宗教(而且,嗯,这是真的)......但我真的不想过滤掉“绝地归来” 原因does belong more to other categories(我想这是主要问题,如何辨别给定文章的不同类别的权重)。
其他解决方案
一种可能的解决方案是,对于我在遍历图表时找到的每个类别|文章,检查它是否不属于我已经访问过的任何其他类别。问题是这不太行得通,因为在第二个高级类别之后,例如“宗教”可能有另一个不同于“宗教”的高级父级。
另一种可能的解决方案是在某个级别切断遍历,例如 3。这将修复前面的示例;现在的问题是在哪个级别(启发式?)。并且,虽然它们属于指定的高级类别,但某些文章仍将保留,这不是最佳解决方案。使用PetScan,并在深度 2 处切割遍历,得到大约 12000 篇文章:很少的文章,还有一些像“Bertrand Russell”这样的“误报”。
有什么想法吗?
编辑:使用 Wikipedia API 似乎不是一个选项(我需要过滤掉许多类别)。
【问题讨论】: