2017-03-15 2 views
0

위키피디아 덤프가 있는데 특정 카테고리 (예 : '종교')에 속한 기사를 걸러 내고 싶습니다. 각 기사에는 text 필드 하단에 카테고리 목록이 있지만 문제는 즉각적인 카테고리 만 나열된다는 것입니다 (예 : 'Jesus'article은 'Religion'카테고리에 속하지만 'Religion'자체는 아닙니다. 하단에 해당 범주 중 하나로 나열).카테고리별로 위키 백과 문서 필터링

내 접근

내 첫 번째 방법은 "종교"나열 각 카테고리 또는 페이지 목록 카테고리 그래프를 횡단 상기 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 건의 기사가 제공됩니다. 기사는 거의없고 '버트 랜드 러셀'과 같은 '오 탐지 (false positives)'가 있습니다.

아이디어가 있으십니까?

편집 : Wikipedia API를 사용하면 옵션이 아닌 것처럼 보입니다 (많은 카테고리를 필터링해야 함).

답변

1

초기 요구 사항으로 돌아가서 명확하게해야한다고 생각합니다. 귀하의 질문에, 당신은 "나는 특정 카테고리에 속하는 기사를 걸러 내고 싶다"라는 말로 시작했습니다. 이 결과는 이미 달성되었지만 명시된 기준에 부합한다고하더라도 특정 기사 (즉, 제다이의 귀환)가 반환되었다고는 만족하지 못했습니다.

당신은 "다른 카테고리에 속합니다"라는 말과 함께 문제의 원인을 정확하게 식별했으나 이는 매우 임의적 인 규칙으로 표현되며 문제를 해결하기 위해 주관적이지 않은 것을 필요로 할 것입니다. 생각한다.당신은 당신이를 통해 그것을 제외 할 수 있습니다 전에 결과를 원하지 않는 이유를 명확히해야합니다 그래서 즉

"Jedi의 반환은"위키 백과에 따라 종교 범주의 멤버입니다 일부 알고리즘. 추가 기준을 정의 할 수 있으면 원하지 않는 것을 제외하도록 필터를 조정할 가능성이 큽니다. 이것은 예를 들어 "Films"범주를 제외한 종교 카테고리의 모든 기사를 찾을 수있게합니다.

영어로 된 요구 사항을보다 정확하게 표현할 수 있다면 솔루션으로 이어질 것입니다.

+0

그건 사실입니다. 'belongs_to (articles, category_to_exclude)가 아니라 belongs_to (article, list_of_categories_to_include)'와 같은 일을하는 것이 효과가있을 것 같습니다. 그것에 대해 더 생각해야합니다. 감사. –