2009-10-13 7 views
1

최근에 내 humble side project을 시작했으며 제출물을 볼 때 "관련 제출"섹션을 추가하려고합니다. 그 사람이 여기서하고있는 것과 정확히 같습니다 - 관련 항목 제목 오른쪽 열을 참조하십시오.관련 제출물을 찾는 효율적인 알고리즘

각 제출물에는 제목과 태그 집합이 있으며, 가장 효과적 (최적 결과), 가장 효율적 (빠른 메모리 친화적) 관련 제출물에 대해 데이터베이스를 쿼리하는 방법은 무엇입니까?

나는 이것을 (나는 대답으로 게시 할) 한 가지 방법으로 생각할 수 있지만 나는 다른 사람들이 무엇을 말해야 하는지를 매우 흥미롭게 생각한다. 아니면 이미 이것을 달성하는 표준 방법이 있습니까?

답변

3

여기 내 두 가지 해결책이 있습니다.
최상의 결과를 얻으려면 쿼리 결과에 "가중치"를 넣어야합니다.

먼저 데이터베이스의 각 제출은 가중치가 0으로 가정됩니다. "풀"의 제출물이 현재 제출물과 하나의 태그를 공유하는 경우 발견 된 제출물에 +3을 추가합니다. 따라서 현재 제출물과 두 개의 태그를 공유하는 다른 제출물이 발견되면 +6을 가중치에 더합니다.

다음으로, 우리는 현재 제출의 제목을 분리/토큰 화하고 "정지 단어"를 제거합니다.
Google에서 정지 단어 목록을 보았습니다 만, 지금은 정지 단어를 다음과 같이 정의 할 것입니다.

예 : [ "of", "a", "the"
제목 "모든 시간 베스트 제출"
배열 결과 : "", "최고", "제출", "중", "모두", "시간"
중지 단어 제거 : [ "

그런 다음 언급 한 제목이 포함 된 제출물을 데이터베이스에 쿼리하고 각 결과에 대해 가중치를 추가합니다. +2
마지막으로 가중치에 따라 내림차순 목록을 정렬하고 상위 N 개의 결과를 가져옵니다.

당신은 어떻게 생각하십니까? (부드럽게 말하십시오!)

0

잘 이해하면 두 개의 게시물이 서로 "유사"한지 찾아내는 기술이 필요합니다. 당신은 그것을 위해 확률 모델을 사용할 수 있습니다 : 아이디어는이 게시물은 "드문"단어를 많이 공유하는 경우, 그들은 아마도 같은 주제에 대해 말하는 것을 말할 것

http://en.wikipedia.org/wiki/Mutual_information

. 일반적이지 않은 단어를 탐지하는 경우 응용 프로그램에 따라 일반적인 주파수 표를 사용하거나 게시물의 단어에 대해 직접 작성하십시오 (그러나 관련성이있는 단어가 충분해야합니다) .

나는 제목과 꼬리표에 국한하지 않겠지 만 연구에서 과체중이 될 것입니다.

이런 종류의 아이디어는 스팸 필터링에서 매우 일반적입니다. 나는 불행하게도 시간은 전체 리뷰를 만들기 위해,하지만 빠른 구글 검색을 제공합니다

http://www.aclweb.org/anthology/P/P04/P04-3024.pdf karlmicha.googlepages.com/acl2004_poster.pdf을

관련 문제