WIKI

SEOUL‍
wiki:sw:dokuwiki:imp...

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
wiki:sw:dokuwiki:improvement [2023/06/15 01:19] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1wiki:sw:dokuwiki:improvement [2025/11/06 01:12] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +<!DOCTYPE markdown>
 +
 +# Ideas for improving Dokuwiki
 +
 +## 개요
 +[[wiki:sw:dokuwiki|DokuWiki]]의 기능을 개선하기 위한 아이디어의 모음.
 +
 +## 한국어 처리
 +현재 도쿠위키는 라틴 문자를 제외한 대부분의 아시안 언어를 예외처리하여 인덱싱한다. 이 때, 일본어/중국어 등 띄어쓰기를 하지 않는 언어를 고려하여 각 문자를 하나의 단어로 처리한다[참고](https://bugs.dokuwiki.org/563.html). 이러한 방식은 크게 두 가지 단점을 가지고 있다.
 +
 +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는 백링크와 비슷한 방식으로 해결하면 될 것으로 보임.
 +---- struct data ----
 +pageinfo.status      : Draft
 +----