19. 직접 구현한 AC법
VS. RegexpList
AC법을 직접 구현하여 도입함으로 계산량이 줄어들었지만
정규 표현식의 각종 옵션을 쓰지 못하게 되어 유연성이 결여됨
Regex::List를 채택함으로써 계산량 및 유연성을 모두 확보
13년 6월 25일 화요일
20. 키워드 링크 결론
정규 표현 => AC법 => Regexp:List
처음부터 최적의 구현을 사용하는 것이 옳다고 할 수 없음.
데이터가 작은 동안에는 오히려 단순한 것이 결과도 좋음.
하지만, 대규모가 될 시기를 대비해서 본질적인 문제의
해결방법을 염두에 두는 것이 필요
13년 6월 25일 화요일
22. 기사 분류란?
새로 도착한 기사를 내용 기반으로 자동으로 분류하여
사용자에게 카테고리로 분류해서 보여주는 기능
하테나 기사 분류는 베이지안 필터라는 원리를 사용
13년 6월 25일 화요일
23. 베이지안 필터의 원리
‘나이브 베이즈의 정리’를 기반으로 하는 알고리즘
P(C|D) 를 구하는 문제
D가 주어졌을때 C가 발생할 확률
즉, D 문서가 주어졌을때 C 카테고리일 확률을 계산
13년 6월 25일 화요일
24. 베이즈 정리
P(A|B) 를 계산 가능한 식으로 변경
P(A|B) * P(B) = P(A^B)
P(A^B) = P(A) * P(B|A)
즉, P(A|B) = P(B|A) * P(A) / P(B)
13년 6월 25일 화요일
25. 베이즈 정리를 적용
원하는 것은 확률 값이 아니라 카테고리 분류 즉, 모든 카테고
리에 대한 확률의 우선 순위
P(C|D) = P(D|C) * P(C) / P(D)
모든 카테고리에 대해 P(D)는 같으므로 생략
P(C), P(D|C)가 중요
13년 6월 25일 화요일
26. P(D|C), P(C) 구하기
P(C)
특정 카테고리가 출현할 확률
학습 데이터를 통해 C가 나타날 확률을 구함
P(D|C)
문서는 단어의 집합
즉, P(D|C) => P(W1|C) * P(W2|C) .. P(Wn|C)
학습 데이터에서 단어마다 어느 카테고리로 분류되었는지
횟수를 보존한 후 P(D|C)의 근사값을 구함
13년 6월 25일 화요일
27. 알고리즘이 실용화되기까지
베이지안 필터는 구조상으로 심플
주요 부분은 스크립트 언어로 100 ~ 200 정도
But, 적용까지는...
13년 6월 25일 화요일
28. 1. C++ 로 개발한 분류 엔진을 서버화
2. 서버와 통신해서 결과를 얻는 Perl 클라이언트 작성,
웹 애플리케이션에서호출
3. 학습 데이터를 정기적으로 백업할 수 있는 기능 추가
4. 학습 데이터 1,000 건을 수작업으로 준비
5. 바람직한 정밀도가 나오는지 추적하기 위한 통계 구조 작성
정밀도 튜닝
6. 다중화를 고려해서 스탠바이 시스템 구성
7. 웹 애플리케이션 사용자 인터페이스 마련
실무 면에서는 고려해야 할 점은 꽤 많다
실제 베이지안 필터 적용 과정
13년 6월 25일 화요일