C20::WIKI

SEOUL_still under construction‍
wiki:sw:dokuwiki:imp...
pageinfo
status
Draft

<!DOCTYPE markdown>

Ideas for improving Dokuwiki

개요

DokuWiki의 기능을 개선하기 위한 아이디어의 모음.

한국어 처리

현재 도쿠위키는 라틴 문자를 제외한 대부분의 아시안 언어를 예외처리하여 인덱싱한다. 이 때, 일본어/중국어 등 띄어쓰기를 하지 않는 언어를 고려하여 각 문자를 하나의 단어로 처리한다참고. 이러한 방식은 크게 두 가지 단점을 가지고 있다.

  1. 한국어의 경우 (관사의 한계는 있으나) 분명하게 띄어쓰기를 구현함에도 불구하고, 다른 아시아 언어와 묶여 글자별로 단어처리된다. 이는 불합리할 뿐더러 CJ 언어에 비해 당위성도 떨어진다.
  2. 인덱서 파일에 저장되는 ‘단어’의 길이가 글자에 따라 달라진다. 예를 들어 ‘가’와 ‘간’은 다른 길이의 단어로 인식된다. 이는 직관에 반한다. 현재 내부적으로는 큰 문제가 없으나, 잠재적인 문제가 발생할 소지는 여전히 있다.

이를 해결하기 위해, 다음과 같은 순서로 도쿠위키 코드를 수정한다.

  1. Asian 단어 처리를 위한 regex filtering에 한글 자모/글자를 제외하여 한국어 단어는 라틴 문자와 동일한 방식으로 처리한다. 즉 whitespace로 단어를 구분한다.
  2. Strlen 대신 mb_strlen으로 단어의 길이를 계산한다.
  3. 가능하다면, 형태소를 분석하여 관사를 제거한다.
  4. 단어 처리 방식이 바뀌었으므로, 한국어 stopword를 사용하는 것이 가능해진다.

이 방식이 가질 수 있는 단점은 다음과 같다.

  • 인덱서에 저장되는 단어의 길이가 길어짐에 따른 퍼포먼스 문제?
  • 검색 과정에서의 에러?
  • 기타 문제들

이에 대해서는 포럼에 물어봐야 할 듯.

중단

1까지는 구현을 성공했으나, 3이 안되어서 일단 중지. 3이 중요한 이유는, 검색이 제대로 되지 않기 때문이다. 엘라스틱서치를 사용하거나, 그냥 기존 인덱서 방식을 사용하거나(대신 을/를/이/가 등은 stopword로 설정) 해야 할 듯.

문서 유사성

  • 단어 인덱스를 사용하므로, page vector를 계산해 그 cosine similiarity를 계산하면 되지 않을까?
  • computational load는 백링크와 비슷한 방식으로 해결하면 될 것으로 보임.
wiki/sw/dokuwiki/improvement.txt · 마지막으로 수정됨: 2023/06/14 16:19 저자 clockoon