pageinfo | |
---|---|
status | Draft |
<!DOCTYPE markdown>
Ideas for improving Dokuwiki
개요
DokuWiki의 기능을 개선하기 위한 아이디어의 모음.
한국어 처리
현재 도쿠위키는 라틴 문자를 제외한 대부분의 아시안 언어를 예외처리하여 인덱싱한다. 이 때, 일본어/중국어 등 띄어쓰기를 하지 않는 언어를 고려하여 각 문자를 하나의 단어로 처리한다참고. 이러한 방식은 크게 두 가지 단점을 가지고 있다.
- 한국어의 경우 (관사의 한계는 있으나) 분명하게 띄어쓰기를 구현함에도 불구하고, 다른 아시아 언어와 묶여 글자별로 단어처리된다. 이는 불합리할 뿐더러 CJ 언어에 비해 당위성도 떨어진다.
- 인덱서 파일에 저장되는 ‘단어’의 길이가 글자에 따라 달라진다. 예를 들어 ‘가’와 ‘간’은 다른 길이의 단어로 인식된다. 이는 직관에 반한다. 현재 내부적으로는 큰 문제가 없으나, 잠재적인 문제가 발생할 소지는 여전히 있다.
이를 해결하기 위해, 다음과 같은 순서로 도쿠위키 코드를 수정한다.
- Asian 단어 처리를 위한 regex filtering에 한글 자모/글자를 제외하여 한국어 단어는 라틴 문자와 동일한 방식으로 처리한다. 즉 whitespace로 단어를 구분한다.
- Strlen 대신 mb_strlen으로 단어의 길이를 계산한다.
- 가능하다면, 형태소를 분석하여 관사를 제거한다.
- 단어 처리 방식이 바뀌었으므로, 한국어 stopword를 사용하는 것이 가능해진다.
이 방식이 가질 수 있는 단점은 다음과 같다.
- 인덱서에 저장되는 단어의 길이가 길어짐에 따른 퍼포먼스 문제?
- 검색 과정에서의 에러?
- 기타 문제들
이에 대해서는 포럼에 물어봐야 할 듯.
중단
1까지는 구현을 성공했으나, 3이 안되어서 일단 중지. 3이 중요한 이유는, 검색이 제대로 되지 않기 때문이다. 엘라스틱서치를 사용하거나, 그냥 기존 인덱서 방식을 사용하거나(대신 을/를/이/가 등은 stopword로 설정) 해야 할 듯.
문서 유사성
- 단어 인덱스를 사용하므로, page vector를 계산해 그 cosine similiarity를 계산하면 되지 않을까?
- computational load는 백링크와 비슷한 방식으로 해결하면 될 것으로 보임.
wiki/sw/dokuwiki/improvement.txt · 마지막으로 수정됨: 2023/06/14 16:19 저자 clockoon