블로그 태그 자동 생성

(추가) 이 기능은 현재 지원하지 않는다.

동기

이 블로그는 마크다운 파일을 랜더링해서 동적으로 블로그 페이지들을 생성한다. (참고: 블로그 만들다., 마크다운 변환기) 그러다 보니 Jekyll이나 워드프레스처럼 태그를 추가하는 기능이 없었다.

마크다운으로 작성된 한글 문서로부터 자동으로 태그를 골라내면 어떨까 하는 이것저것 귀찮아 하는 마음으로 간단한 구현을 시도해 보았다.

디자인

원하는 디자인은 이런 것이었다.

상황이 이렇다 보니 내가 할 수 있는 것이 별로 없었다. 정규식을 이용해서 대강대강 불필요한 마크다운 문법들을 잘라내거나 글귀들을 모아 등장 빈도를 세는 것 뿐.

놀랍게도! 두둥! 이 단순한 방법은 생각보다 잘 통했다. 맨 윗 줄의 "태그" 버튼을 눌러 보라. 아니면 이 글 밑에 있는 태그들을 한 번 보라. 현재 지원하지 않는다.

구현

구체적으로 하는 일은 이러하다.

  1. 문서로부터 코드 모두 지우기
  2. HTML 태그 모두 지우기
  3. 마크다운 관련 문법 지우기
  4. 특수 문자 지우기
  5. 토큰으로 자르기
  6. 조사 지우기
  7. 많이 등장한 토큰들 고르기

대부분은 정규식으로 대충 때려 지웠다. 사전을 사용하지 않으려 했지만 6에서만 불가피하게 오픈소스 한국어 처리기에서 사용하는 조사 리스트를 사용했다.

왜 되는 거지?

뭐 대단할 건 아니지만 머신러닝이나 한국어 형태소 분석기 없이 뭔가 그럴싸한 결과가 나왔다. 이게 왜 되는 걸까?

이유1: 생각보다 동사 부분은 겹치지 않는다. 처음엔 "~이다", "~했다" 같은 단어들이 많이 등장할 것 같았는데 그렇지는 않았다. 한국어로 글을 쓸 때 생각보다 동사들은 반복해서 사용하지 않는 것 같다. 영어였으면 아마 "is", "a", "the" 등등이 엄청 나왔을 텐데.

이유2: 답이 없다. 태그를 고르는 건 답이 없는 문제다. 답이 없으니 대강 뽑아도 틀릴 수가 없는 것이다.

아쉬움

물론 방법이 간단한 만큼 틀린 것들도 종종 등장한다. 예를 들면, "할아버지"에서 "지"가 조사인 줄 알고 잘라낸 "할아버"라던가. "페도라"에서 "라"가 조사인 줄 알고 잘라낸 "페도"라던가. 조사로 끝나면서 사전에 등록된 단어들에 대해 특별 대우를 해 주면 안 될 것도 없지만. 괜찮다. 어차피 완벽한 녀석을 만들 생각은 없었다. 이 정도면 매우 만족한다.

또 하나 아쉬운 건 태그 생성 시기다. 태그를 동적으로 고르기엔 비용이 크기 때문에 정적으로 미리 고른다. 반면 HTML은 동적으로 생성하는데 둘 사이가 뭔가 어색하다. 이 어색함을 어떻게 해야 할지 고민이다.

2017-03-06 씀.